我创建了一个程序,用户可以在其中创建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时,它将它存储在应用程序的文件夹中,但我需要用户能够访问此文件,然后将其复制到计算机上。
答案 0 :(得分:1)
我的手机里没有外接的SD卡
那不是external storage。那是removable storage。
当我进入存储设置时,它会显示用户应用程序空间和内部SD卡存储
Android设备向用户报告的内容以及Android SDK向您报告的内容有所不同。 Internal storage和external storage都是板载闪存的一部分。唯一的区别是外部存储是用户(和其他应用程序)可以访问的内容,而大多数用户无法访问每个应用程序的内部存储部分。
我知道有一个Environment.get ...但这是外部的
getExternalStoragePublicDirectory()
上的 Environment
和getExternalFilesDir()
上的Context
适用于external storage。外部存储空间不是removable storage。
当我使用Context.MODE_PRIVATE时,它会将其存储在应用程序的文件夹中,但我需要用户能够访问此文件,然后将其复制到计算机上。
然后在getExternalStoragePublicDirectory()
上使用Environment
,如果它适合这些类型的公共目录之一。否则,请在getExternalFilesDir()
上使用Context
。两者都指向用户可以访问的external storage上的位置(例如,将设备安装为Windows中的驱动器)。