【问题标题】:Android cannot write text into resource fileAndroid无法将文本写入资源文件
【发布时间】:2014-01-30 19:21:23
【问题描述】:

我在 res (res/raw) 中创建了一个原始文件夹,并且还创建了 my_text_file.txt 文件。
现在我想在这个文件中写一些东西。
我写了一些代码,但我不能写(例如)一个简单的字符串。

这是我的代码。

如果有人知道我的代码有什么问题,请帮助我

try {
                FileOutputStream fos = openFileOutput("my_text_file.txt",
                        Context.MODE_PRIVATE);
                OutputStreamWriter osw = new OutputStreamWriter(fos);
                osw.write("17");
                osw.flush();
                osw.close();
            } catch (java.io.IOException e) {
                // do something if an IOException occurs.
            }

【问题讨论】:

标签: java android


【解决方案1】:

您可以读取您的文件,但不能更改资源文件夹中的文件。 您可以做的是将文件保存在外部存储中,然后开始更改文件。

别忘了设置权限:

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

【讨论】:

  • 谢谢我也使用了这个权限。我的问题是。我第一次写代码时可以在 sdcard 中创建 txt 文件,但我想这个文件只会显示我。meybe 问题的解决方案是隐藏这个txt 文件在 sdcard 上,但对于我来说这是不可能的
  • 你能解释一下为什么吗?也许您可以尝试另一种解决方案,您可以在文件夹名称之前设置一个点 ".myapp/text.txt" ,这样用户就无法从基于 Android 或 Unix 的 PC 访问您的内容
  • 如果您希望该文件只为您显示,那么您可以将其存储在您应用的文件夹中,例如:String absoluteFilePath = getApplicationContext().getFilesDir().getPath() + "/" + fileName; FileOutputStream fileOut = new FileOutputStream(absoluteFilePath); 这样只有您的应用才能访问它。
  • 谢谢。这是正确的语法吗? /sdcard/.json.txt
  • 是的,可以。您知道您不需要在文件末尾设置“.txt”吗?这样您的用户将很容易识别文件
【解决方案2】:

您不应该写入资源文件。它的存在是为了存储您在编译之前放在这里的数据。如果你想在文件中保存一些信息,在运行时你可以这样做:

public static void writeToFile(String fileName, String encoding, String text) {
    Writer writer = null;

    try {
        writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), encoding));
        writer.write(text);
    } catch (IOException ex) {
        Log.e(TAG, "", ex);
    } finally {
        try {
            writer.close();
        } catch (Exception ex) {
        }
    }
}

要查找 SD 卡的路径,您可以使用以下方法:

Environment.getExternalStorageState()

所以你可以像这样使用这个方法:

writeToFile(Environment.getExternalStorageState() + "/" + "my_text_file.txt", "UTF-8", "my_text");

别忘了设置权限

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

统一更新: 您不应该使用 SD 卡来存储一些安全信息!更多信息here.

要写入仅对您的应用程序可用的数据,请使用以下代码:

public static void writeToInternalFile(String fileName, String text) {
    FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE);
    fos.write(text.getBytes());
    fos.close();
}

从该文件中读取

public static String readFromInternalFile(String fileName) {
    FileInputStream fis = openFileInput(, Context.MODE_PRIVATE);
    StringBuilder sb = new StringBuilder();
    int ch;
    while((ch = fis.read()) != -1){
        sb .append((char)ch);
    }
    return sb.toString();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 2019-09-18
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    相关资源
    最近更新 更多