java - 无法按预期将我的 arrayList 写入文件

标签 java android file android-activity

我有这个方法,应该将 arrayList 写入文件:

private ArrayList<String> readFromFile() {
    String ret = "";
    ArrayList<String> list = new ArrayList<String>();
try {
    InputStream inputStream = openFileInput("jokesBody.bjk");

    if (inputStream != null) {
        InputStreamReader inputStreamReader = new InputStreamReader(
                inputStream);
        BufferedReader bufferedReader = new BufferedReader(
                inputStreamReader);
        String receiveString = "";
        StringBuilder stringBuilder = new StringBuilder();

        while ((receiveString = bufferedReader.readLine()) != null) {
            list.add(receiveString);
        }

        inputStream.close();
        ret = stringBuilder.toString();
        System.out.println("DA CRAZY FILE: " + ret);
    }
} catch (FileNotFoundException e) {
    Log.e("login activity", "File not found: " + e.toString());
} catch (IOException e) {
    Log.e("login activity", "Can not read file: " + e.toString());
}

return list;
}

它的问题是它写入了像 [item1, item2, item3] 这样的值,稍后当我需要将值加载回 listArray 时,它是在索引 0 处加载整行。现在我找到了写入和读取 arrayList 的正确方法,但是我在访问文件时遇到了问题。

这是我试过的代码:

     private void writeToFile(ArrayList<String> list) {
                try {

                     FileOutputStream fos = new FileOutputStream("jokesBody.bjk");
                        ObjectOutputStream oos = new ObjectOutputStream(fos);   
                        oos.writeObject(list); // write MenuArray to ObjectOutputStream
                        oos.close(); 

                } catch (IOException e) {
                    Log.e("Exception", "File write failed: " + e.toString());

                        }
}

但它抛出以下异常:

02-12 09:21:10.227: E/Exception(2445): File write failed: java.io.FileNotFoundException: /jokesBody.bjk: open failed: EROFS (Read-only file system)

哪里错了,默认的app文件位置在哪里?我知道我遗漏了一些小东西,但作为 Android 初学者,我无法发现它。

最佳答案

这不是吗:

java.io.FileNotFoundException: /jokesBody.bjk: open failed: EROFS (Read-only file system)

问题?您正在写入不可写区域。更改您写入的位置(可能是 creating a temporary file would be a simple first step - 我不熟悉 Android,但我认为这是可能的)

关于java - 无法按预期将我的 arrayList 写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21730776/

相关文章:

java - 我应该如何设计一个 wordpress 后端 + react + java 前端应用程序?

java - Andengine,平铺纹理大小需要是 2 的幂吗?

android - C、Android NDK : import own input. h 版本包含缺失声明

android - 避免在 Android 中注册重复的广播接收器

python - 加载 JSON 数据时出错 - 找不到文件

java - 执行者服务中的异常处理

java - AndEngine - 删除特定的 Sprite 及其主体

android - 以编程方式将 View 添加到 LinearLayout 的中间

无法在 C 中的 TXT 文件中单独写入

c - 为什么“while(!feof(file))”总是错误的?