我已经坚持了一段时间,我终于决定请求帮助了。 所以我有一个小文本文件,并且用户想要从中切换2行,用户输入2行的索引,我必须切换em。 到目前为止,我的想法是使用replaceALL和2个正则表达式 ,但是答:那可能不会切换它们但只是最终用另一个替换一个,留给我一个副本和B:我不知道如何使用正则表达式找到第n行; 或者使用 - Files.readAllLines(Paths.get(name))。get(index);得到这两条线然后我仍然在努力实际切换过程。
答案 0 :(得分:2)
您可以使用
Files.readAllLines
将所有行列为列表Collections.swap
如果您需要能够处理大型文件,可以
答案 1 :(得分:0)
如果您正在处理大型文件并需要节省内存,则可以执行此操作(但如果第二个交换行靠近文件末尾可能需要更长时间):
File myFile = new File(somePath);
File outputFile = new File(someOtherPath);//this is where the new version will be stored
BufferedReader in = new BufferedReader(new FileReader(myFile));
PrintWriter out = new PrintWriter(outputFile);
String line;
String swapLine;//first line to swap
int index = -1;//so that the first line will have an index of 0
while((line = in.readLine()) != null){
index++;
if(index == firstIndex){//if this line is the first line to swap
swapLine = line;//store the first swap line for later
//Create a new reader. This one will read until it finds the second swap line.
BufferedReader in2 = new BufferedReader(new FileReader(myFile));
int index2 = -1;
while(index2 != secondIndex){
index2++;
line = in.readLine();
}
//The while loop will terminate once line is equal to the second swap line
}else if(index == secondIndex)//if this line is the second swap line{
line = swapLine;
//this way the PrintWriter will write the first swap line instead of the second
}
out.println(line);
}
当然,您可以通过编程方式删除myFile
并将outputFile
重命名为之后在磁盘上命名的myFile
:
myFile.delete();
outputFile.renameTo(myFile);
我相信这有效,但我没有测试过。