我需要替换文件的第一行。因此,我通过逐行读取文件并替换第一行然后附加所有其他行然后最后将其写回来以通常的方式执行此操作。使用count
变量将行号计算为优化,因为它会阻止其他equals()
比较运行。
如果有人想要替换第n行,count
可以轻松调整。{/ p>
我的问题是 - 我们是否真的需要阅读整个文件,即使已知更换必须在第一行完成?有没有办法避免读取其他行并仍然能够修改此文件?
private void replaceFirstLine(File file)
{
BufferedReader bufferedReader = null;
FileWriter writer = null;
try
{
bufferedReader = new BufferedReader(new FileReader(file));
String line = bufferedReader.readLine();
String content = "";
int count = 0;
while (line != null)
{
if(count < 1 && line.equals(CURRENT_FIRST_LINE))
{
line = EXPECTED_FIRST_LINE;
count++;
}
content = content + line + System.lineSeparator();
line = bufferedReader.readLine();
}
writer = new FileWriter(file);
writer.write(content);
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
//Closing the resources
bufferedReader.close();
writer.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}