谁能解释一下为什么会这样 FileNotFoundException
发生?
我正在试着得到最后的修改 file_name
从远程linux,这种方式工作并返回文件名:
ProcessBuilder pb = new ProcessBuilder();
ProcessBuilder pbSetPermissions = new ProcessBuilder();
pb.command("/bin/bash", "-c", "ls -t " + System.getProperty("user.dir") + " | head -n 1");
String fileName = IOUtils.toString(pb.start().getInputStream(), StandardCharsets.UTF_8);
System.out.println(fileName);
File folder = new File(System.getProperty("user.dir"));
String filePath = folder + "/" + DOWNLOADS_DIR + "/" + fileName;
pbSetPermissions.command("/bin/bash", "-c", "chmod 777 " + filePath);
pbSetPermissions.start();
System.out.println(filePath);
此外,它设置了文件的正确权限,我可以读取此文件,例如使用“nano”
但是,当我尝试从java filereader读取和解析这个文件时:
FileReader filereader = new FileReader(filePath);
我总是得到:
java.io.FileNotFoundException: (No such file or directory)
参见屏幕:
我已经解决了这个问题,得到了最后的答案 Modified File Name
另一种方式:
File file = findLastModified(System.getProperty("user.dir") + File.separator + DOWNLOADS_DIR);
System.out.println(System.getProperty("user.dir") + File.separator + DOWNLOADS_DIR);
public static File findLastModified (String sdir) {
File dir = new File(sdir);
if (dir.isDirectory()) {
Optional<File> opFile = Arrays.stream(dir.listFiles(File::isFile))
.max(Comparator.comparingLong(File::lastModified));
if (opFile.isPresent()){
return opFile.get();
}
}
return null;
}
====================
但是我仍然不明白为什么bash脚本的第一种方法不起作用。文件名中似乎有一些隐藏的符号?或者是有编码的?因为从我看来文件路径是正确的。
暂无答案!
目前还没有任何答案,快来回答吧!