很高兴您找到了一个解决方案,但如果您需要另一个解决方案,可以尝试此方法代码。该方法允许您将任何文本文件行移动到文件中的任何文本行位置。
代码注释得很好。阅读方法上方的文档:
@SuppressWarnings("null")
public void moveFileLine (String filePath, int lineToMove, int... moveToLine)
throws FileNotFoundException, IOException {
int moveTo = 0;
if (moveToLine.length > 0) {
moveTo = moveToLine[0];
}
BufferedReader reader = new BufferedReader(new FileReader(filePath));
FileWriter writer = new FileWriter("tmpMoveLineFile.txt");
String line;
String newLine = System.lineSeparator();
String moveLineString = "";
int lineCounter = 0;
while ((line = reader.readLine()) != null) {
lineCounter++;
if (lineCounter == lineToMove) {
moveLineString = line;
if (moveTo > 0) { break; }
}
}
if (reader != null) { reader.close(); }
if (moveTo <= 0 || moveTo > lineCounter) {
moveTo = lineCounter;
}
reader = new BufferedReader(new FileReader(filePath));
lineCounter = 0;
while ((line = reader.readLine()) != null) {
lineCounter++;
if (lineCounter == moveTo) {
writer.write((lineCounter > 1 && lineCounter > lineToMove ?
line + newLine + moveLineString + newLine :
moveLineString + newLine + line + newLine));
}
else if (lineCounter != lineToMove) {
writer.write(line + newLine);
}
}
writer.close();
reader.close();
File origFile = new File(filePath);
if (origFile.delete()) {
File srcFile = new File("tmpMoveLineFile.txt");
srcFile.renameTo(origFile);
}
}