我尝试读取文件并获取FileNotFoundExeption。
File file = new File("News.out");
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
try{
in.readObject();
}
我检查一下,该文件确实存在于目录中并检查文件的“可读”属性。
然后我添加了“可读”和“可写”属性的程序设置
file.setReadable(true);
file.setWritable(true);
System.out.println(file.canRead());
System.out.println(file.canWrite());
记录错误,错误。
这可能是什么原因?
编辑:
我尝试使用JSR 203并使用此代码:
Path path = FileSystems.getDefault().getPath(filename);
try(
final InputStream in = Files.newInputStream(path);
) {
ObjectInputStream objectInputStream = new ObjectInputStream(in);
newsStorage.setEntities((ArrayList<News>) objectInputStream.readObject());
} catch (NoSuchFileException e) {
createFile(path, filename);
handleException(e);
}
并且createFile()方法:
private void createFile(Path path, String string) {
try {
Files.newOutputStream(path, StandardOpenOption.CREATE);
} catch (IOException e1) {
e1.printStackTrace();
}
}
未创建文件。
我是否理解正确,
Files.newOutputStream(path, StandardOpenOption.CREATE);
应该创建一个文件吗?
答案 0 :(得分:2)
帮自己一个忙,放弃File
。请改用JSR 203。
尝试并使用:
try (
final InputStream in = Files.newInputStream("News.out");
) {
// work with "in" here
}
如果你不能进行开场那么你至少会有一个例外,告诉你到底出了什么问题,File
从来没有做过。
之后,如果要设置文件的权限,也可以使用JSR 203进行设置,但这取决于底层文件系统的功能。如果您的文件系统与POSIX兼容,那么您可以使用this method。但也可能是您无法修改文件的权限。