【问题标题】:Java PrintWriter to file (on a mac) not workingJava PrintWriter 到文件(在 Mac 上)不起作用
【发布时间】:2014-11-12 16:16:11
【问题描述】:
我已经阅读了这里的几个线程,但仍然无法找出为什么 PrintWriter 没有打印到文件而是抛出 java.io.FileNotFoundException。我检查了文件位置,检查了文件路径中的大写/小写。谁能告诉我我做错了什么:
File output = new File("/Users/<myname>/Documents/javaoutput.txt");
output.getParentFile().mkdir();
PrintWriter writer = new Printwriter(output);
【问题讨论】:
标签:
java
macos
file-io
printwriter
【解决方案1】:
您不是在检查目标目录/Users/<myname>/Documents 是否存在或创建它的尝试是否成功。如果目标目录不存在,new PrintWriter() 将抛出 FileNotFoundException。
这样的事情可能会更好:
File output = new File("/Users/<myname>/Documents/javaoutput.txt");
File dir = output.getParentFile();
if (!dir.isDirectory() && !dir.mkdirs()) {
// handle could not create directory
throw new SomeException("Could not create target directory '" + dir + "'");
}
PrintWriter writer = new Printwriter(output);
如有必要,我在这里使用mkdirs() 而不是mkdir() 来创建整个目录路径(/Users、/Users/<myname> 和/Users/<myname>/Documents)。您应该决定您的程序在无法创建目录时应该做什么,并为这种情况添加正确的代码。