如何将数据写入Java文件中的特定行号
标题:将数据写入文件中的特定行号 这是我的示例文件:如何将数据写入Java文件中的特定行号,java,eclipse,file,Java,Eclipse,File,标题:将数据写入文件中的特定行号 这是我的示例文件: 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.out.println(
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.out.println(“hi”);至System.out.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();
}
}
}
import java.io.*;
公共类换行{
公共静态void main(字符串[]args)
{
FileInputStream fs=null;
试一试{
fs=newfileinputstream(“C:\\Users\\workspace\\Compilers\\testfile.txt”);
}catch(filenotfounde异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
BufferedReader br=新的BufferedReader(新的InputStreamReader(fs));
对于(int i=0;i<6;++i)
试一试{
br.readLine();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
试一试{
字符串lineIWant=br.readLine();
字符串newtext=lineWant.replace(“系统”、“系统”);
System.out.println(newtext);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
我不能做的是将我更正为第5行的字符串重写回文件。
谢谢您需要写入第二个临时文件,因为您仍在读取第一个临时文件。一旦替换完成并且文件完全写出,删除第一个文件并重命名第二个文件 编辑: 根据您的评论,如果要对文件内容进行多个或更复杂的更改,可以将任务分解为以下步骤:
- 使用FileInputStream将原始文件的内容作为输入流读取
- 与其将输入流包装在BufferedReader中,不如读取输入流的内容并将其写入ByteArrayOutputStream(一个类似于输出流但将内容作为字节数组保存在内存中的文件)
- 使用字节数组作为构造函数参数构造新字符串
- 现在,内存中有一个字符串,它包含原始文件的全部内容
- 对该字符串进行更改后,使用FileWriter将其写入第二个文件
- 使用File类删除原始文件,然后再次重命名输出文件
如果文件有更多错误,比如第2、4、5、6、7行,他需要找到一种方法,以顺序方式一行接一行地写每一行(在处理了有错误的行之后)对于新创建的文件?运行此代码时会发生什么?程序将转到第5行,在该行中出现错误,并将字符串Syst替换为Syst by Syst,并在控制台上输出。我不知道的是如何将字符串重写回第5行的原始位置。FS是逐字节工作的。一些Java API类将其封装起来,允许您逐行阅读。您能提供一个示例代码吗?我完全无法理解。感谢您告诉我,如果我必须在几行中替换字符串,那么如何将其写入文件中各自的位置。我试过了,但不起作用。您能帮助我查看以下链接吗: