我在Android应用资产中读取和写入文件有什么问题?

时间:2012-07-03 12:57:42

标签: android inputstream bufferedreader fileoutputstream android-assets

代码优先:

AssetManager mgr = DeviceListActivity.this.getApplicationContext().getAssets();

try {
    Log.e("Glenn:", address);
    FileOutputStream fout = mgr.openFd("device/device_address.txt").createOutputStream();
    PrintWriter _fout = new PrintWriter(fout);
    _fout.println(address);
    Log.e("Glenn", address);

    _fout.close();
    fout.close();

    InputStream fin =  mgr.open("device/device_address.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(fin));
    address = br.readLine(); 

    try {
        Log.e("Glenn:", address);
    } catch (NullPointerException e) {
        e.printStackTrace();
    }
} catch (IOException e) {
    e.printStackTrace();
    Log.e("Glenn", "error with OutputStream");
}

前两个Log.e()调用打印的地址值是正确的值,实际上是设备MAC地址。但是,当我尝试测试从刚刚写入的文件读取的地址值时,NullPointerException已在Log.e()调用中捕获。这意味着从文件中读取的值为NULL。任何人都可以指出代码有什么问题吗?

1 个答案:

答案 0 :(得分:5)

您无法在应用的资产档案中写信。您只读了但没有写权限。 AssetManager仅提供从应用资产文件夹中读取文件的方法。