android中的EBADF错误文件编号错误

时间:2013-12-11 02:34:53

标签: java android properties

我正在尝试将.properties文件写入我的android项目的assets文件夹。我似乎正在加载文件并修改它,但是当我去商店时它会向我吐出这个错误:

12-10 21:19:07.447: W/System.err(1781): java.io.IOException: write failed: EBADF (Bad file number)

我已添加写入权限:

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

Evrything我发现inputStream必须以某种方式关闭,但我不知道怎么办?

文件名是config.properties并且有 “积分= 0” 作为唯一的数据。

这是我的代码(注意侧滚动条)

public static void write(Context Activity){ // the activity passed in is "this" from the caller, who is an activity
    AssetManager am = Activity.getResources().getAssets();
    Properties pp = new Properties();
    InputStream isConfig = null;
    try {
        isConfig = am.open("config.properties",Context.MODE_PRIVATE);
        pp.load(isConfig);
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    pp.setProperty("Points", "1");//This key exists
    try {
        pp.store(Activity.getAssets().openFd("config.properties").createOutputStream(), null); //This is the problem
        isConfig.close();
    } catch (FileNotFoundException e) {
        System.err.println("file not found");
        e.printStackTrace();
    } catch (IOException e) {
        System.err.println("IO Exception");
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:1)

您无法使用该应用程序写入res / raw或assets文件夹。您必须修改内容并将其存储在外部存储或内部文件系统或其他位置,但不能存储在res / raw或assets文件夹中。