Android 如何在SD卡上存储文件(外部)
我想使用Android 如何在SD卡上存储文件(外部),android,file,android-sdcard,Android,File,Android Sdcard,我想使用file在SD卡上存储一个文件。我已经实现了在外部存储器中存储文件(在我的文件浏览器应用程序中命名为内部存储器。这不是SD卡) 我读了很多关于在SD卡上存储数据的书,经常看到: new File(Environment.getExternalStorageDirectory() + "/MyFile") 但这会将文件存储在外部存储器上,而不是存储在SD卡上。那么,如何将文件存储在SD卡上而不是外部存储器上呢?理想情况下,您可以使用存储访问框架(例如,操作\u创建\u文档)并让用户选择将
file
在SD卡上存储一个文件。我已经实现了在外部存储器中存储文件(在我的文件浏览器应用程序中命名为内部存储器。这不是SD卡)
我读了很多关于在SD卡上存储数据的书,经常看到:
new File(Environment.getExternalStorageDirectory() + "/MyFile")
但这会将文件存储在外部存储器上,而不是存储在SD卡上。那么,如何将文件存储在SD卡上而不是外部存储器上呢?理想情况下,您可以使用存储访问框架(例如,
操作\u创建\u文档
)并让用户选择将此内容放在何处。用户可能希望将内容放在其他地方。例如,用户可能没有可移动存储器
暂时欢迎您使用
getExternalFilesDirs()
和Context
上的类似方法。如果这些返回2+个元素,则第二个和后续的元素是可移动存储上的位置。在Android 4.4+上,您的应用程序可以在没有任何特定权限的情况下写入这些位置。Android Q在这里改变了很多规则,这也是改用存储访问框架的另一个原因。使用它可以帮助您:
参数是什么?我必须设置什么there@JonasPTFL:我不确定你指的是什么参数。如果您是指
getExternalFilesDirs()
的参数,请传入null
或Environment.DIRECTORY.*
值之一,例如Environment.DIRECTORY.\u MUSIC
。更多信息请参见。是的,对不起,这是我的错!好的,我将null作为参数传递,但该方法将返回一个文件数组。。。我与此有什么关系?@jonastfl:如果阵列中只有一个元素,则用户没有任何可移动存储。如果用户在阵列中有2+个元素,则第二个和后续的元素将指向可移动存储上特定于应用程序的位置。您可以使用这些作为创建文件、子目录等的基本目录。好的,非常感谢!我成功地将文件存储在sd卡上,但在Android/data/my.app.package/文件夹中。。。我也可以将它存储在主文件夹中吗?Android文件夹在哪里?
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)