繁体   English   中英

如何将文件写入外部存储(SD卡)

[英]How to write files to external storage (sdcard)

我知道这可能已被多次回答,我已经搜索过,但我无法解决我的问题。 每次我尝试写入SD卡时,它似乎都会进入内部存储。 我的代码行很简单

File root = android.os.Environment.getExternalStorageDirectory(); 
File dir = new File (root.getAbsolutePath() +"/mydir");
dir.mkdirs();

当我转到“我的文件”时,该目录始终显示在/ storage / emulated / 0中,而不是显示在SD卡上。 我拥有清单中设置的所有权限。 我有什么简单的东西吗?

PS我的设备是注3.我可以手动将文件复制到SD卡。

如何将文件写入外部存储(SD卡)

在大多数Android设备上,外部存储不是“sdcard”。

当我转到“我的文件”时,该目录始终显示在/ storage / emulated / 0中,而不是显示在SD卡上

这是因为/storage/emulated/0是外部存储。

引用文档

每个Android兼容设备都支持可用于保存文件的共享“外部存储”。 这可以是可移动存储介质(例如SD卡)或内部(不可移动)存储。

Android SDK几乎不支持其他存储位置,例如SD卡。 Android 4.4有一点,如同一文档页面所述:

有时,已经分配内部存储器分区以用作外部存储器的设备也可以提供SD卡插槽。 当这样的设备运行Android 4.3及更低版本时,getExternalFilesDir()方法仅提供对内部分区的访问,并且您的应用程序无法读取或写入SD卡。 但是,从Android 4.4开始,您可以通过调用getExternalFilesDirs()来访问这两个位置,它返回一个包含每个位置条目的File数组。 阵列中的第一个条目被视为主要外部存储,您应该使用该位置,除非它已满或不可用。 如果您想同时访问两个可能的位置,同时也支持Android 4.3及更低版本,请使用支持库的静态方法ContextCompat.getExternalFilesDirs()。 这也会返回一个File数组,但在Android 4.3及更低版本中只包含一个条目。

在这里,我发布了用于查找sdcard路径的代码(在问题的正文中)

如何正确获取外部SD卡路径?

它应该解决你的问题。 “外部”存储并不总是您的SD卡,因为许多Android设备将内部存储器视为外部分区。 真实外部存储(您的SD卡)的路径由设备的构造函数设置,并且没有用于获取它的标准API。

打印

dir.toString()

以上,看看你得到了什么。 然后将其与之比较

File dir = new File(getExternalFilesDir(null) +  File.separator + "mydir");

如果你喜欢第二种选择,你应该得到(我做了)/storage/sdcard0/data/your.package.name/files/mydir,你上面的目录是mydir,而不是My Files?

你需要手动找到外置SD卡,这取决于手机。

请参阅本教程 ,其中有一个示例,说明如何测试SD卡的不同路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM