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

时间:2010-12-22 03:02:38

标签: java configuration-files

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

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

甚至x = z。

5 个答案:

答案 0 :(得分:2)

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

  

java.util.Properties

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

但是如果您只是想手动编辑它,您只需read the file line by line并匹配您想要更改的变量。

答案 1 :(得分:2)

在Java中,您可以使用`属性类:
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); 

  }

答案 2 :(得分:1)

一种方法是:

  1. 将文件读入内存;例如作为表示文件行的字符串数组。
  2. 找到要更改的字符串/行。
  3. 使用正则表达式(或其他)修改字符串/行
  4. 从内存版本中编写新版本的文件。
  5. 这有很多变化。在编写新版本的文件时还需要注意,以防止在写入过程中出现问题时丢失所有内容。 (通常,您将新版本写入临时文件,将旧版本重命名(例如作为备份)并重命名新版本以代替旧版本。)

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

答案 3 :(得分:0)

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

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

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

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

答案 4 :(得分:0)

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

键1 =值

键2 =值

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

希望这有帮助!

RH