下面是我的代码,它读取一个文件,然后将其内容写入一个新文件。我需要做的是在旧文件的每一行文本之间添加文本,并将其放入新文件中。在这段代码中,文件是作为一个整体读取的,那么我如何将其更改为逐行遍历并在每行之间添加文本呢?
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);
}
}
我认为您的readTextFileByLines可以满足您的需要。您可以遍历List,并在每行之前和之后写出您想要的内容。
如果必须使用readTextFile方法,可以使用split("\n")将单个大字符串(整个文件)转换为字符串数组,每行一个。
嗯。。。Split的文档(一个参数)表示,结果中不会包含尾随的空字符串。因此,如果输入文件的末尾可能包含空行,则应使用两个参数split和一个非常大的第二个参数:split("\n",Long.MAX_VALUE);
- 逐行阅读文本文件,并在需要的地方添加新行
- 将带有新行的读取值放入字符串中,每行用\n分隔
- 写入新的文本文件
如果您要做的是在每次前后用相同的字符串重写每一行,则可以使用以下代码:
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();
以删除第一个文件。
如果你想在每行之前和之后写的内容都很具体,那么不幸的是,我帮不了你。