我可以在模拟器中不使用手机内存而不是虚拟SD卡下载文件吗?

时间:2010-01-27 16:30:25

标签: android file emulation

参考问题

Can anyone explain the File() parameters used to download file in android?

我可以在不创建虚拟SD卡的情况下执行此操作。有没有办法将文件保存在内存中的手机内存中?如果可以不使用虚拟SD卡,那么如何?

2 个答案:

答案 0 :(得分:1)

你的问题有点不清楚你想要使用哪个,所以这两个都是。

像pbaird说的那样,你可以轻松地将文件保存到手机的内部存储中 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卡
  • 正在与PC共享SD卡
  • SD卡是只读的
  • SD卡没有文件系统
  • SD卡已损坏

答案 1 :(得分:0)

如果您执行Context.openFileOutput()并且只给它一个没有路径的文件名“myfile.txt”,它应该在应用程序的数据目录中创建文件,而不是SD卡。