[英]Writing to a file, where is the output file?
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文件,但它是空的。
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()
等等。
如果文件成功創建(未引發異常),則它位於當前工作目錄中。
對於您正在執行的Java類,右鍵單擊該文件並轉到“運行方式 - >運行配置...”
在此屏幕中,轉到“參數”選項卡。 在屏幕底部,查找“工作目錄”設置。 這是Java類將從中運行的目錄。
在您的示例中,您在當前目錄中創建“member.txt”,因此它將顯示在“工作目錄”設置的任何位置。
這取決於您正在使用的IDE。 它通常會進入file.java所在的同一目錄。 我認為像Eclipse和Netbeans這樣的程序可能會把它扔到另一個目錄中。
如果從Eclipse運行,則當前工作目錄將是項目的基本目錄(查看項目屬性以在磁盤上查找該位置)。 您應該能夠通過刷新項目在Project Explorer中查看該文件(單擊該項目並按F5 )。
您可以從“參數”選項卡下的“運行配置”對話框中指定備用工作目錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.