下面是我的代码,它读入文件,然后将其内容写入新文件。我需要做的是在旧文件的每行文本之间添加文本,并将其放在新文件中。在此代码中,文件是作为一个整体读取的,那么如何将其更改为逐行进行并在每个文件之间添加文本?
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);
}
}
答案 0 :(得分:0)
我认为你的readTextFileByLines会做你想要的。您可以遍历List并在每行之前和之后写出您想要的任何内容。
如果必须使用readTextFile方法,则可以使用split(&#34; \ n&#34;)将单个大字符串(整个文件)转换为字符串数组,每行一个。
嗯......斯普利特(一个论点)的文档说尾随空字符串不会包含在结果中。因此,如果您的输入文件最后可能包含空行,则应使用带有非常大的第二个参数的两个参数split:split(&#34; \ n&#34;,Long.MAX_VALUE);
答案 1 :(得分:0)
答案 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();
删除第一个文件。
如果你想在每行之前和之后写出的内容是特定的,那么很遗憾,我无法帮助你。