Ваш вопрос немного неясен относительно того, что вы хотите использовать, поэтому вот оба.
Как сказал mbaird, вы можете легко сохранить файл во внутреннюю память телефона, используя
Context.openFileOutput()
. Например:
// Create file on internal storage and open it for writing
FileOutputStream fileOut;
try {
fileOut = openFileOutput(userId +".ics", Context.MODE_PRIVATE);
} catch (IOException e) {
// Error handling
}
// Write to output stream as usual
// ...
Это создаст новый файл во внутренней памяти телефона по следующему пути:
/data/data/com.example.yourpackagename/files/123456.ics
.
Только ваше приложение может прочитать этот файл; другие не смогут прочитать этот файл, как если бы он был на SD-карте.
Если вы хотите сохранить файл на SD-карту, вам нужно что-то вроде этого:
if (Environment.getExternalStorageState() != Environment.MEDIA_MOUNTED) {
// SD card is not available
return;
}
File root = Environment.getExternalStorageDirectory() +"/myapp/";
File newFile = new File(root, userId +".ics");
FileOutputStream fileOut = new FileOutputStream(newFile);
// Write to output stream as usual
// ...
Как видите, вы не можете полагаться на наличие SD-карты и ее доступность для записи в любой момент времени. Это может быть по нескольким причинам:
- Устройство / эмулятор не имеет SD-карты
- SD-карта используется совместно с ПК
- SD-карта доступна только для чтения
- На SD-карте нет файловой системы
- SD-карта повреждена