我正在尝试打开一个文件以进行读取或创建该文件(如果不存在).
我使用以下代码:
String location = "/test1/test2/test3/";
new File(location).mkdirs();
location += "fileName.properties";
Path confDir = Paths.get(location);
InputStream in = Files.newInputStream(confDir, StandardOpenOption.CREATE);
in.close();
而且我得到了java.nio.file.NoSuchFileException
考虑到我正在使用StandardOpenOption.CREATE选项,如果文件不存在,则应创建该文件.
知道为什么我会收到这个例外吗?
最佳答案
似乎您希望发生两种完全独立的事情之一:
>如果文件存在,请阅读;要么
>如果文件不存在,请创建它.
这两件事是互斥的,但是您似乎已经混淆了它们.如果文件不存在,而您刚刚创建了文件,则没有必要读取它.因此,请将这两件事分开:
Path confDir = Paths.get("/test1/test2/test3");
Files.createDirectories(confDir);
Path confFile = confDir.resolve("filename.properties");
if (Files.exists(confFile))
try (InputStream in = Files.newInputStream(confFile)) {
// Use the InputStream...
}
else
Files.createFile(confFile);
还请注意,最好使用“ try-with-resources”,而不是手动关闭InputStream.