Что не так с моим чтением и записью файла в активах приложения Android?

Код первый:

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 ответ

Решение

Вы не можете написать в файле активов вашего приложения. Вы имеете только права на чтение, но не на запись. AssetManager предоставляет только методы для чтения файлов из папки ресурсов вашего приложения.

Другие вопросы по тегам