如何使用openFileOutput()指定文件路径?

时间:2014-08-24 23:00:28

标签: android file storage android-sdcard android-context

我创建了一个程序,用户可以在其中创建arrayList,然后将该列表保存到存储设备上的文本文件中。我使用了https://developer.android.com/training/basics/data-storage/files.html中的代码:

String filename = "myfile";
String string = "Hello world!";
FileOutputStream outputStream;

try {
  outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
  outputStream.write(string.getBytes());
  outputStream.close();
} catch (Exception e) {
  e.printStackTrace();
}

我想找到一种方法将它放到外部存储器上。我知道你在想什么:为什么不像他们发布的那样做呢?好吧,我的手机没有外接SD卡,而且我使用内置存储,这仍然是SD卡(当我进入存储设置时,它显示用户应用程序空间和内部SD卡存储,有一个外部SD卡存储 - 我只是没有SD卡)。我知道有一个Environment.get ......但这是外部的。当我使用Context.MODE_PRIVATE时,它将它存储在应用程序的文件夹中,但我需要用户能够访问此文件,然后将其复制到计算机上。

1 个答案:

答案 0 :(得分:1)

  

我的手机里没有外接的SD卡

那不是external storage。那是removable storage

  

当我进入存储设置时,它会显示用户应用程序空间和内部SD卡存储

Android设备向用户报告的内容以及Android SDK向您报告的内容有所不同。 Internal storageexternal storage都是板载闪存的一部分。唯一的区别是外部存储是用户(和其他应用程序)可以访问的内容,而大多数用户无法访问每个应用程序的内部存储部分。

  

我知道有一个Environment.get ...但这是外部的

getExternalStoragePublicDirectory()上的

EnvironmentgetExternalFilesDir()上的Context适用于external storage。外部存储空间不是removable storage

  

当我使用Context.MODE_PRIVATE时,它会将其存储在应用程序的文件夹中,但我需要用户能够访问此文件,然后将其复制到计算机上。

然后在getExternalStoragePublicDirectory()上使用Environment,如果它适合这些类型的公共目录之一。否则,请在getExternalFilesDir()上使用Context。两者都指向用户可以访问的external storage上的位置(例如,将设备安装为Windows中的驱动器)。