如何在文本文件的每一行之前和之后插入文本?

时间:2016-05-02 01:25:08

标签: java file writefile

下面是我的代码,它读入文件,然后将其内容写入新文件。我需要做的是在旧文件的每行文本之间添加文本,并将其放在新文件中。在此代码中,文件是作为一个整体读取的,那么如何将其更改为逐行进行并在每个文件之间添加文本?​​

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.List;

public class Webpage {
  public static String readTextFile(String fileName) throws IOException {
    String content = new String(Files.readAllBytes(Paths.get(fileName)));
    return content;
  }

  public static List<String> readTextFileByLines(String fileName)throws IOException {
    List<String> lines = Files.readAllLines(Paths.get(fileName));
    return lines;
  }

  public static void writeToTextFile(String fileName, String content)throws IOException {
    Files.write(Paths.get(fileName), content.getBytes(), StandardOpenOption.CREATE);
  }

} 

3 个答案:

答案 0 :(得分:0)

我认为你的readTextFileByLines会做你想要的。您可以遍历List并在每行之前和之后写出您想要的任何内容。

如果必须使用readTextFile方法,则可以使用split(&#34; \ n&#34;)将单个大字符串(整个文件)转换为字符串数组,每行一个。

嗯......斯普利特(一个论点)的文档说尾随空字符串不会包含在结果中。因此,如果您的输入文件最后可能包含空行,则应使用带有非常大的第二个参数的两个参数split:split(&#34; \ n&#34;,Long.MAX_VALUE);

答案 1 :(得分:0)

  1. 逐行阅读文本文件,并在您希望的位置添加新行。
  2. 将读取的值用新行放在每行的字符串中,用\ n。
  3. 分隔
  4. 写入新的文本文件。

答案 2 :(得分:0)

如果你要做的是在每次之前和之后用相同的字符串重写每行,那么你可以使用这段代码:

public static void main(String[] args) throws IOException {
    addLines("/Users/Hamish/Desktop/file1.txt", "/Users/Hamish/Desktop/file2.txt");
}

public static void addLines(String fileName, String secondFile) throws IOException {
    File file = new File(fileName);
    FileReader fr = new FileReader(file);
    BufferedReader br = new BufferedReader(fr);
    String line = null;
    PrintWriter writer = new PrintWriter(secondFile, "UTF-8");
    while ((line = br.readLine()) != null) {
        writer.println("Random line before");
        writer.println(line);
        writer.println("Random line after");
    }
    br.close();
    writer.close();
}

有效地,它逐行读取txt文件,在每行之前和之后它将打印您指定的内容。

如果你想在最后你也可以写:

file.delete();

删除第一个文件。

如果你想在每行之前和之后写出的内容是特定的,那么很遗憾,我无法帮助你。