Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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_Io - Fatal编程技术网

如何将选定行中的值替换为现有java文件

如何将选定行中的值替换为现有java文件,java,io,Java,Io,在这种情况下,哪个类最适合使用?我应该调用什么方法来替换指定行的值?唯一的方法是读取所有行,然后将它们写回,并修改指定行。所以BufferedReader和BufferedWriter将是你的主要武器 until eof read line increment line number if the line number is the specified line replace content end if write the modified l

在这种情况下,哪个类最适合使用?我应该调用什么方法来替换指定行的值?

唯一的方法是读取所有行,然后将它们写回,并修改指定行。所以
BufferedReader
BufferedWriter
将是你的主要武器

until eof
   read line
   increment line number 
   if the line number is the specified line
       replace content
   end if
   write the modified line 

如果有行号,则使用BufferedWriter类获取行号,然后使用BufferedWriter对象在包含现有行的同一行号上写入新行

如果之前不知道行号,则需要先使用BufferedReader读取文件,找到行号,然后按照上述步骤替换行号

卡亚曼的答案是错误的

  • 在编程中,在大多数情况下有许多解决方案。这就是为什么“唯一的办法是……”是错误的
  • Kayaman的解决方案只适用于大小小于可用Java堆大小的非常小的文件。但是应该在问题描述中指定它,比如“最大文件大小为1MB,JVM堆大小为128MB”。如果您使用256MB堆运行Java,而您的文件是20GB,那么它将无法工作
  • 甚至逐行读写也可能不起作用,因为行的长度可能超过堆的大小

  • 感谢他们的“武器”。)谢谢你的快速回复。嗯,这些事实是真实的。但是,该文件是一个配置文件,在本例中,它的大小肯定不会大于1MB。@nellykvist:您没有提到它是一个配置文件。对于“是”配置,通常情况下,这应该可以工作。