FileWriter outFile = null;
try {
outFile = new FileWriter("member.txt");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.println("test");
运行该命令,member.txt在哪里?我正在使用Windows vista。 UAC启用所以当我运行它时,我不认为它正在写入txt文件。但是创建了txt文件,但它是空的。
答案 0 :(得分:6)
Java IO中的相对路径与当前工作目录相关。在Eclipse中,通常是项目根目录。您还写信给out
而不是outFile
。这是一个小改写:
File file = new File("member.txt");
FileWriter writer = null;
try {
writer = new FileWriter(file);
writer.write("test");
} catch (IOException e) {
e.printStackTrace(); // I'd rather declare method with throws IOException and omit this catch.
} finally {
if (writer != null) try { writer.close(); } catch (IOException ignore) {}
}
System.out.printf("File is located at %s%n", file.getAbsolutePath());
关闭是必需的,因为它将写入的数据刷新到文件中并释放文件锁。
毋庸置疑,在Java IO中使用相对路径是一种不好的做法。如果可以,而是使用类路径。 ClassLoader#getResource()
,getResourceAsStream()
等等。
答案 1 :(得分:4)
如果文件成功创建(没有引发异常),则它位于当前工作目录中。
答案 2 :(得分:2)
对于您正在执行的Java类,右键单击该文件并转到“运行方式 - >运行配置...”
在此屏幕中,转到“参数”选项卡。在屏幕底部,查找“工作目录”设置。这是Java类将从中运行的目录。
在您的示例中,您在当前目录中创建“member.txt”,因此它将显示在您的“工作目录”设置的任何位置。
答案 3 :(得分:0)
这取决于您正在使用的IDE。它通常会进入file.java所在的同一目录。我认为像Eclipse和Netbeans这样的程序可能会把它扔到另一个目录中。
答案 4 :(得分:0)
如果从Eclipse运行,则当前工作目录将是项目的基本目录(查看项目属性以在磁盘上查找该位置)。您应该可以通过刷新项目在Project Explorer中查看该文件(单击该项目并点击 F5 )。
您可以从Arguments选项卡下的Run Configurations对话框中指定备用工作目录。