2016-11-27 91 views
0

請注意,這是一項家庭作業。將文本追加到文件中每行的開頭

任何人都可以幫助我弄清楚如何將文本附加到文本文件的每一行的開頭?這是我到目前爲止有:

package addStr; 
import java.util.*; 
import java.io.*; 

public class AddStr { 
    public static void main(String args[]) throws FileNotFoundException, IOException{ 
     Scanner con = new Scanner(System.in); 

     System.out.print("Enter input file: "); 
      String fileIn = con.next(); 
     System.out.print("Enter output file: "); 
      String fileOut = con.next(); 

     File in = new File(fileIn); 
     Scanner sc = new Scanner(in); 
     FileWriter out = new FileWriter(in, true); 
     PrintWriter print = new PrintWriter(out); 


     print.print("hello"); 


     print.close(); 
    } 

} 

我只印有「你好」作爲一個測試,看看那裏的文件中,將追加。它附在最後一行的末尾。我需要它追加到第一行的開頭,然後使用循環將它追加到每個後續行的開頭。

另外,程序提示用戶輸入文件名。

+0

所以你的輸出將是newText + restOfFile? –

+0

我需要將文本追加到文件中每行的開頭。 – derek00101110

+0

您無法同時讀取和寫入同一個文件。要做到這一點的唯一方法是寫入臨時文件,然後在完成重命名舊文件後重命名新文件,刪除舊文件。或者從標準輸入讀取並寫入標準輸出,並讓用戶在命令行上指定重定向。 –

回答

1

更改文件內容的最簡單方法是打開它進行讀取,將其讀取到結構中,重新打開文件進行寫入,然後從結構寫回到文件。除非文件很大,否則性能將完全可以接受。

如果您使用的是Java 8,那麼這可能相當微不足道。假設你有一個Path的文件:

List<String> lines = Files.lines(path).map(s -> "Prefix" + s).collect(Collectors.toList()); 
Files.write(path, lines);