2010-08-18 62 views
3
 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文件被創建,但它是空的。寫入文件,輸出文件在哪裏?

回答

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()等。

4

如果文件被成功創建(不會引發異常),則它位於當前工作目錄中。

0

這取決於您使用的IDE。它通常會進入file.java所在的目錄。我認爲像Eclipse和Netbeans這樣的程序可能會將它拋棄在不同的目錄中。

0

如果從Eclipse運行,當前工作目錄將作爲項目的基本目錄(查看您的項目屬性以在磁盤上查找該位置)。您應該能夠通過刷新項目在Project Explorer中看到該文件(單擊該項目並點擊F5)。

您可以在「參數」選項卡下的「運行配置」對話框中指定替代工作目錄。

2

對於你執行的Java類,右鍵單擊該文件,進入「運行方式 - >運行配置...」

在該畫面中,進入「參數」選項卡。在屏幕底部,查找「工作目錄」設置。這是您的Java類將從中運行的目錄。

在您的示例中,您正在當前目錄中創建「member.txt」,因此它將顯示在「工作目錄」設置爲的任何位置。