繁体   English   中英

在java中,如何编辑文本文件的1行?

[英]In java, how do i edit 1 line of a text file?

好的,所以我知道线的价值,我没有行号,我怎么只编辑1行?

它是一个配置文件,即x = y我想要一个命令来编辑x = y到x = y,z。

甚至x = z。

如果您使用的是该配置格式,则可能需要使用

java.util.Properties

要读取/写入该文件的组件。

但是如果您只是想手动编辑它,您可以逐行读取文件并匹配您想要更改的变量。

在Java中,您可以使用`Properties类:
app.config文件:

x=y

Java的:

  public void writeConfig() throws Exception {
    Properties tempProp = new Properties();
    tempProp.load(new FileInputStream("app.config")); 
    tempProp.setProperty("x", "y,z");
    tempProp.store(new FileOutputStream("app.config"), null); 

  }

一种方法是:

  1. 将文件读入内存; 例如,作为表示文件行的字符串数组。
  2. 找到要更改的字符串/行。
  3. 使用正则表达式(或其他)来修改字符串/行
  4. 从内存版本中写入新版本的文件。

这有很多变化。 在编写新版本的文件时还需要注意,以防止在写入过程中出现问题时丢失所有内容。 (通常,您将新版本写入临时文件,将旧版本重命名(例如作为备份)并重命名新版本以代替旧版本。)

不幸的是,如果不重写文件的大部分内容,就无法在常规文本文件的中间添加或删除字符。 这个“问题”并不特定于Java。 它是在大多数主流操作系统上建模/表示文本文件的方式的基础。

除非新线的长度与旧线完全相同,否则最好的选择是

  • 打开临时输出文件
  • 逐行读取配置文件
  • 搜索你的密钥
  • 如果找不到,只需将刚刚读取的行写入输出文件即可
  • 如果可以找到它,请将新值写入临时文件
  • 直到你打EOF
  • 删除旧文件
  • 将新文件重命名为旧文件

如果您的配置文件很小,您还可以在内存中执行整个解析/修改步骤,然后将最终结果写回配置文件,这样就可以跳过临时文件(尽管临时文件是防止损坏的好方法如果你在写文件时出现问题)。

如果这不是您想要的,那么您应该更清楚地编辑您的问题。 我只想猜你要的是什么。

如果您的数据是所有键和值对,例如......

键1 =值

键2 =值

...然后将它们加载到Properties对象中。 在我的脑海中,您需要一个FileInputStream来加载属性,使用myProperties.put(key,value)进行修改,然后使用FileOutputStream保存属性。

希望这可以帮助!

RH

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM