Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中切换文本文件中的两行_Java_File - Fatal编程技术网

在Java中切换文本文件中的两行

在Java中切换文本文件中的两行,java,file,Java,File,我在这件事上纠缠了一段时间,最后决定请求帮助。 所以我有一个小的文本文件,用户想从中切换两行,用户输入这两行的索引,我必须切换em。 到目前为止,我的想法是使用带有2个正则表达式的replaceALL ,但是A:那可能不会切换它们,而只是用另一个替换一个,给我留下一个副本;B:我不知道如何使用正则表达式定位第n行; 或者使用-Files.readAllLines(path.get(name)).get(index);要得到这两条线路,但我仍在努力进行实际的切换过程。您可以使用 文件。readA

我在这件事上纠缠了一段时间,最后决定请求帮助。 所以我有一个小的文本文件,用户想从中切换两行,用户输入这两行的索引,我必须切换em。 到目前为止,我的想法是使用带有2个正则表达式的replaceALL ,但是A:那可能不会切换它们,而只是用另一个替换一个,给我留下一个副本;B:我不知道如何使用正则表达式定位第n行; 或者使用-Files.readAllLines(path.get(name)).get(index);要得到这两条线路,但我仍在努力进行实际的切换过程。

您可以使用

  • 文件。readAllLines
    获取所有行作为列表
  • 交换列表中的两个元素。e、 g.
    Collections.swap
  • 将所有行写回以更新文件
如果你需要能够处理大文件,你可以

  • 使用RandomAccessFile从文件的开头读取所需行的开始/结束
  • 将这两行读入缓冲区
  • 将这两行写在适当的位置,但交换

如果您正在处理一个大文件并且需要保存内存,您可以这样做(尽管如果第二个交换行接近文件末尾,则可能需要更长的时间):

当然,您可以通过编程方式删除
myFile
并将
outputFile
重命名为磁盘上以后命名的
myFile

myFile.delete();
outputFile.renameTo(myFile);

我相信这是可行的,但我还没有测试过。

它需要处理大文件吗?谢谢,我稍后会尝试。
myFile.delete();
outputFile.renameTo(myFile);