eclipse如何将数据写入Java文件中的特定行号
标题:将数据写入文件中的特定行号
这是我的示例文件:
public class MyC{
public void MyMethod()
{
System.out.println("My method has been accessed");
Syst.out.println("hi");
String l;
nt x=0;
}
}
我的目标是什么
我想转到第5行,纠正字符串Syst。出来println(“hi”);到系统。出来println(“hi”); 到目前为止,我已经能够访问有错误的行,并将字符串保存在变量中并替换错误
以下是我迄今为止所取得的成就:
import java.io.*;
public class NewReplaceLine {
public static void main(String[] args)
{
FileInputStream fs = null;
try {
fs = new FileInputStream("C:\\Users\\workspace\\Compilers\\testfile.txt");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedReader br = new BufferedReader(new InputStreamReader(fs));
for(int i = 0; i < 6; ++i)
try {
br.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
String lineIWant = br.readLine();
String newtext = lineIWant.replace("Syst", "System");
System.out.println(newtext);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我不能做的是将我更正为第5行的字符串重写回文件。 谢谢
# 1 楼答案
由于仍在读取第一个临时文件,因此需要写入第二个临时文件。一旦替换完成并且文件完全写出,删除第一个文件并重命名第二个文件
编辑:
根据您的评论,如果要对文件内容进行多个或更复杂的更改,可以将任务分解为以下步骤:
# 2 楼答案
@Chris Gerken 如果文件有更多错误,比如第2、4、5、6、7行,他需要找到一种方法,将每一行依次写入新创建的文件中(在处理了有错误的行之后)
# 3 楼答案
(除非某些第三方库这样做),否则您不能这样做(不仅在Java中,在其他语言中也是如此)
您可以按顺序或通过随机访问对文件进行读/写,但随机访问使用字节而不是行(FS不知道您的文件是否包含文本或二进制数据)。如果您找到正确的字节并在那里覆盖,如果您在原始行中添加更多的字节,您将覆盖新的字节
我将使用的选项是按顺序读取并复制到一个新文件(注意在正确的位置写入新行),然后关闭这两个文件。之后,用新文件覆盖旧文件