2016-12-23 116 views
1

a.txt列表試圖到第一線移動到最後一行在Java中移動.txt文件的第一行到最後一行

我發現腳本來完成以下

  1. 查找輸入文件中的「文本」並輸出到臨時文件。 (我可以設置 「文本」的字符串buffRead.readLine?),然後...
  2. 刪除原稿文件並重新命名新文件到原稿?

請給我我是新來的Java,但我做了大量的研究,無法找到我認爲是一個簡單的腳本的解決方案。

+4

閱讀的第一行,並存儲爲一個字符串,然後讀取文件的其餘部分,各行輸出到新文件。最後,在新文件的末尾寫上第一行。很簡單,你準時回家吃玉米片。 –

回答

3

因爲這是Java和關注文件IO,這是一個不平凡的設置。算法本身很簡單,但所需的符號並不是立即可見的。

BufferedReader reader = new BufferedReader(new FileReader("fileName")); 

這給你一個簡單的方法來讀取文件fileName的內容。

PrintWriter writer = new PrintWriter(new FileWriter("fileName")); 

這給你一個簡單的寫入文件的方法。這樣做的API是完全相同的System.out當你使用一個PrintWriter,因此我選擇在這裏使用一個。

此時它讀取文件,並呼應它放回正確的順序一件簡單的事情。

String text = reader.readLine(); 

這會將文件的第一行保存到text

while (reader.ready()) { 
    writer.println(reader.readLine()); 
} 

雖然reader有留在它的文本,打印進線writer

writer.println(text); 

打印您在開始時保存的行。

需要注意的是,如果你的程序做任何東西(它只是一個良好的習慣是這樣),你要關閉你的IO流,以避免泄漏資源。

reader.close(); 
writer.close(); 

或者,你也可以包住整個事情的try-with-resources自動執行相同的清潔。

1
Scanner fileScanner = new Scanner(myFile); 
fileScanner.nextLine(); 

這將從文件返回文本的第一行,並丟棄它,因爲你不存儲任何地方。 覆蓋現有文件:

FileWriter fileStream = new FileWriter("my/path/for/file.txt"); 
BufferedWriter out = new BufferedWriter(fileStream); 
while(fileScanner.hasNextLine()) { 
    String next = fileScanner.nextLine(); 
    if(next.equals("\n") out.newLine(); 
    else out.write(next); 
    out.newLine(); 
} 
out.close(); 

請注意,您必須捕捉和處理一些IOExceptions這種方式。此外,if() ... else()...語句在while()循環必要保留的換行符出現在你的文本文件。

同一行添加到該文件的最後一行看看這個鏈接https://stackoverflow.com/a/37674446/6160431

相關問題