我正在尝试在内部和外部SD卡上保存文件..基本上我想给用户一个选项来保存内部或外部卡上的文件 这就是我在内部SD卡中创建文件的方式
File file = new File(Environment.getExternalStorageDirectory()
+ "/Tnt_input/register.html");
但如何在External SD card
中创建此文件...?
我可以在DDMS中看到两个存储空间
1) sdCard0
2) extSdCard
使用上面的代码在sdCard0
答案 0 :(得分:3)
您可以将context.getFilesDir()
用于内部存储
File file = new File(context.getFilesDir(), filename);
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();
}
查看saving a file to internal storage了解详情。
注意:您应用的内部存储目录由应用程序的软件包名称指定在Android文件系统的特殊位置。从技术上讲,如果您将文件模式设置为可读,则另一个应用程序可以读取您的内部文件。
Good Example for Save and read file from/to Internal/External storage
how to differentiate between internal and external SD card path in android?
答案 1 :(得分:0)
在Android 4.4之前,没有找到所有外部SD卡内存的标准方法,Environment.getExternalStorageDirectory()只返回了一个这样的内存。为了得到其他记忆,程序员正在解析一些Linux配置文件。
从4.4(API 19)开始,有Context.getExternalFilesDir:
返回所有应用程序特定目录的绝对路径 应用程序可以持久存储的外部存储设备 它拥有的文件。这些文件是应用程序的内部文件,而不是 通常作为媒体对用户可见。
所以在4.4之前,你应该使用Environment.getExternalStorageDirectory,然后使用4.4 Context.getExternalFilesDir。
有一篇很好的博客文章详细解释了所有这些:
http://commonsware.com/blog/2014/04/08/storage-situation-external-storage.html
答案 2 :(得分:0)
终于找到了一个工作的解决方案,但不推荐,为了获得外部SD卡,我使用硬编码路径,如/storage/extSdCard/StorageTest/input
但这条路径取决于设备,上述路径适用于三星Galaxy笔记系列但是xperia Z为/storage/removable/sdcard1
。这个解决方案对我有用,因为我的客户端使用特定的设备。但是这样你就无法创建一个适用于每个设备的全局方法,所以这里的代码对我有用
String galaxy_note = "/storage/extSdCard";
File file = new File(galaxy_note
+"/StorageTest/input");
您还可以使用
检查设备中是否安装了可移动SD卡Environment.isExternalStorageRemovable();