在内部和外部SdCard上存储文件

时间:2014-05-05 07:07:28

标签: android android-sdcard

我正在尝试在内部和外部SD卡上保存文件..基本上我想给用户一个选项来保存内部或外部卡上的文件 这就是我在内部SD卡中创建文件的方式

File file = new File(Environment.getExternalStorageDirectory()
            + "/Tnt_input/register.html");

但如何在External SD card中创建此文件...?

我可以在DDMS中看到两个存储空间

1) sdCard0

2) extSdCard

使用上面的代码在sdCard0

中创建此文件

3 个答案:

答案 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();