file.setReadable(true)后文件无法读取

时间:2017-05-27 09:47:50

标签: java io

我尝试读取文件并获取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);

应该创建一个文件吗?

1 个答案:

答案 0 :(得分:2)

帮自己一个忙,放弃File。请改用JSR 203。

尝试并使用:

try (
    final InputStream in = Files.newInputStream("News.out");
) {
    // work with "in" here
}

如果你不能进行开场那么你至少会有一个例外,告诉你到底出了什么问题,File从来没有做过。

之后,如果要设置文件的权限,也可以使用JSR 203进行设置,但这取决于底层文件系统的功能。如果您的文件系统与POSIX兼容,那么您可以使用this method。但也可能是您无法修改文件的权限。