Что не так с моим чтением и записью файла в активах приложения 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 предоставляет только методы для чтения файлов из папки ресурсов вашего приложения.