我想写一下Android手机中的物理SD卡。
这是我的代码:
File sdCard = Environment.getExternalStorageDirectory();
String state = Environment.getExternalStorageState(); //shows mounted
boolean removable = Environment.isExternalStorageRemovable(); //shows false
我知道getExternalStorageDirectory()
中的外部并不一定意味着SD卡。当我将文件写入sdCard对象时,它最终存储在内部(意味着内置)存储中,而不是存储在sdCard中。
在我的手机上,我有多个应用程序将数据写入sdCard,例如文件管理器。他们是如何做到的呢?无论制造商认为内部/外部是什么,我都想强制写入sdCard。
答案 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);
...