如何使用 Java IO 函数更改文件的值

How to change a value of a file using Java IO function

任何人都可以帮助我如何使用 java IO 函数更改文件中的一行。该文件位于 SDCard。我尝试了来自不同博客的一些解决方案,但失败了。

我需要将文件 sdcard/sample.txt 中的一个属性 wpa_oper_channel=1 更改为 2,3,4..... 作为用户需求。

我也试过使用SED命令,但还是不行。请建议是否有任何使用java IO 功能的解决方案。

我用过的命令 using SED :

sed -i 's/wpa_oper_channel=[0-9]\+/wpa_oper_channel=7/' sample.txt

你用什么android?

来自 android 4.4+ 用户无权编辑和删除 SD 卡中的文件。您必须将它们复制到外部存储并在那里使用。看到这个 link - http://code.google.com/p/android/issues/detail?id=67570

你只需要

  • 将文件内容读入内存(关于如何使用 java 执行此操作,millions of examples),
  • 更改内容(查找位置可以使用 indexOf("wpa_oper_channel=")
  • 将内容写回文件(也有millions of examples

如果你的配置文件是Properties文件的形式。这意味着每行的格式为 key=value。您可以轻松阅读、修改和编写它。这是一个例子,我假设你通过流读写文件没有问题。

File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard,"sample.txt");
InputStream is = new FileInputStream(file); // Read your existing file
Properties props = new Properties();
props.load(is);
props.setProperty("wpa_oper_channel", "4");
OutputStream out = new FileOutputStream(file); // Your output file stream
prop.store(output, null); // Save your properties file without header

这样做,如果有其他类型的行,如评论或其他,您可能会输。

更新

我更新了源代码。但是你仍然需要获得读写权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我还没有测试代码,它将与一些异常处理一起工作。如果它不起作用,请指出您的错误。