写入SD卡

时间:2018-04-07 05:33:29

标签: android android-sdcard

我想写一下Android手机中的物理SD卡。

这是我的代码:

    File sdCard = Environment.getExternalStorageDirectory();
    String state = Environment.getExternalStorageState(); //shows mounted
    boolean removable = Environment.isExternalStorageRemovable(); //shows false

我知道getExternalStorageDirectory()中的外部并不一定意味着SD卡。当我将文件写入sdCard对象时,它最终存储在内部(意味着内置)存储中,而不是存储在sdCard中。

在我的手机上,我有多个应用程序将数据写入sdCard,例如文件管理器。他们是如何做到的呢?无论制造商认为内部/外部是什么,我都想强制写入sdCard。

2 个答案:

答案 0 :(得分:0)

  

警告:外部存储上的文件并非始终可访问,因为用户可以将外部存储装载到计算机以用作存储设备。因此,如果您需要存储对应用程序功能至关重要的文件,则应将其存储在内部存储中。

  

请求外部存储权限

要写入公共外部存储,您必须在清单文件中请求WRITE_EXTERNAL_STORAGE权限:

<manifest ...>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    ...
</manifest>    
  

注意:如果您的应用使用WRITE_EXTERNAL_STORAGE权限,则它也隐式拥有读取外部存储空间的权限。

如果您的应用只需要读取外部存储(但不能写入),那么您需要声明READ_EXTERNAL_STORAGE权限:

<manifest ...>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    ...
</manifest>
  

https://developer.android.com/training/data-storage/files.html

现在,让我们假设您想在SD中录制文本文件......

// get the path to sdcard
File sdcard = Environment.getExternalStorageDirectory();
// to this path add a new directory path
File dir = new File(sdcard.getAbsolutePath() + "/your-dir-name/");
// create this directory if not already created
dir.mkdir();
// create the file in which we will write the contents
File file = new File(dir, "My-File-Name.txt");
FileOutputStream os = outStream = new FileOutputStream(file);
String data = "This is the content of my file";
os.write(data.getBytes());
os.close();

答案 1 :(得分:0)

File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + "/dir1/dir2");
dir.mkdirs();
File file = new File(dir, "filename");

FileOutputStream f = new FileOutputStream(file);
...