Могу ли я загрузить файл без использования памяти телефона вместо виртуальной SD-карты в эмуляторе? - PullRequest
0 голосов
/ 27 января 2010

По вопросу

Может кто-нибудь объяснить параметры File (), используемые для загрузки файла в Android?

Могу ли я сделать это без создания виртуальной SD-карты. Есть ли способ сохранить файл в памяти телефона во внутренней памяти? если это возможно без использования виртуальной SD-карты, то как?

Ответы [ 2 ]

1 голос
/ 28 января 2010

Ваш вопрос немного неясен относительно того, что вы хотите использовать, поэтому вот оба.

Как сказал 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-карта повреждена
0 голосов
/ 27 января 2010

Если вы сделаете Context.openFileOutput () и дадите ему просто имя файла, например «myfile.txt» без пути, он должен создать файл в каталоге данных вашего приложения, а не на SD-карте.

...