2017-01-23 20 views
2

我正在處理一個簡單的程序,該程序從用戶處獲取輸入,然後使用特定文件名保存它。我無法操作文件編寫器類創建的文件的名稱

爲了更精確:

public static Scanner in = new Scanner(System.in); 
public static boolean quit = false; 
public static String name; 
public static FileWriter fw; 

public static void main(String[] args) throws IOException { 

    System.out.print("File name: "); 
    name = in.nextLine(); 

    fw = new FileWriter(name + ".txt", false); 
    System.out.println("Continue typing/type save to quit"); 
    while(!quit) { 
     String word = in.nextLine(); 
     if(word.equals("save")) { 

      fw.close(); 
      quit = true; 
     } 

     else {    
      fw.write(word + "\n"); 
     } 

    } 
  1. 程序要求的文件名。
  2. 用戶鍵入的話,直到他類型的「拯救」,這將文件保存

正如你可以看到程序在開始詢問用戶文件名,他開始前輸入。這是我的問題。我希望我的程序在輸入所有單詞後最後詢問用戶文件名。不幸的是,我不能這樣做,因爲創建新對象時文件作者類會創建文件,並且以後不能更改名稱。

我想知道有沒有解決我的問題或我應該尋找什麼樣的信息。

回答

1

你有兩個選擇:

  1. 存儲在內存中的所有用戶輸入(在List<String>例如),然後看到save關鍵字並獲得來自用戶的輸出文件名後寫出來的話。
  2. 按照您的操作打開輸出文件,但使用臨時名稱,並在讀取它們時寫下文字。在看到save關鍵字後,關閉文件,獲取用戶選擇的文件名,然後將臨時文件重命名爲用戶選擇。

除非您需要處理數百萬字,否則爲了簡單起見,我會使用選項1。

+1

謝謝!首選方案解決了我的問題 – sviero