将文本追加到文件中每行的开头

问题描述:

请注意,这是一项家庭作业。将文本追加到文件中每行的开头

任何人都可以帮助我弄清楚如何将文本附加到文本文件的每一行的开头?这是我到目前为止有:

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

您无法同时读取和写入同一个文件。要做到这一点的唯一方法是写入临时文件,然后在完成重命名旧文件后重命名新文件,删除旧文件。或者从标准输入读取并写入标准输出,并让用户在命令行上指定重定向。 –

更改文件内容的最简单方法是打开它进行读取,将其读取到结构中,重新打开文件进行写入,然后从结构写回到文件。除非文件很大,否则性能将完全可以接受。

如果您使用的是Java 8,那么这可能相当微不足道。假设你有一个Path的文件:

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