我知道ExternalFiles将用于API 8及更高版本,而getExternalStorageDirectory则用于7及更低版本.不过我使用之间有点困惑.例如,我想检查一个存在的文件夹,之前您将使用以下内容:
File ChildFolder = new File(Environment.getExternalStorageDirectory() + "/ParentFolder/Child");
Run Code Online (Sandbox Code Playgroud)
但是我看到的每个例子都说使用了getExternalFilesDir(null),File.ext.由于我在API 8以上,我想使用此方法,但我如何检查文件夹?我将在另一点检查文件是否存在但是现在只想查看文件夹是否存在?
TIA JB
waq*_*lam 111
getExternalFilesDir()
Run Code Online (Sandbox Code Playgroud)
它返回SD卡上Android/data/data/your_package /内文件夹的路径.它用于存储应用程序所需的任何文件(例如,从Web或缓存文件下载的图像).卸载应用程序后,此文件夹中存储的所有数据也将消失.
getExternalStorageDirectory()
Run Code Online (Sandbox Code Playgroud)
它返回SD卡的根路径(例如mnt/sdcard /).如果您在此路径上保存数据并卸载应用程序,则该数据不会丢失.
Vik*_*ngh 48
首先,我们需要了解内部存储,外部存储(又称主外部存储)和辅助外部存储之间的区别?
内部存储:用户无法访问的存储,除非是通过已安装的应用程序(或通过生根设备).示例:data/data/app_packageName
主外部存储:在内置的共享存储中,"用户可以通过插入USB电缆并将其作为驱动器安装在主机上"进行访问.示例:当我们说Nexus 5 32 GB时.
辅助外部存储:可移动存储.示例:SD卡.
getExternalFilesDir (String type)
Run Code Online (Sandbox Code Playgroud)
它返回主要外部存储器上Android/data/data/your_package /中的files文件夹的路径.这是内置存储.
getExternalStorageDirectory ()
Run Code Online (Sandbox Code Playgroud)
它将返回辅助外部存储目录的路径
SGa*_*Gal 14
!重要更新!无论谁碰到这个问题.
由于这是一个有点老问题,只是想提供一些额外的信息.由于奇巧甚至有应用WRITE_EXTERNAL_STORAGE同意后只允许写的Android /数据/数据/ your_package /外部存储,又名 getExternalFilesDir()
如果您尝试写入,getExternalStorageDirectory() + "/somefolder/anotherfolder/"则会在大多数设备上获得SecurityException
may*_*513 11
!! 重要的 !!
Environment.getExternalStorageDirectory()已弃用,应改用 Context#getExternalFilesDir(String)、MediaStore 或 Intent#ACTION_OPEN_DOCUMENT。
此方法在 API 级别 29 中已弃用。为了提高用户隐私,不推荐直接访问共享/外部存储设备。当应用以 Build.VERSION_CODES.Q 为目标时,此方法返回的路径不再可供应用直接访问。通过迁移到诸如 Context#getExternalFilesDir(String)、MediaStore 或 Intent#ACTION_OPEN_DOCUMENT 等替代方案,应用程序可以继续访问存储在共享/外部存储上的内容。
https://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()
同样从 Android.M 开始,开发人员需要在运行时请求权限。
Environment.getExternalStorageDirectory() 在 API 级别 29 java 中已弃用
| 归档时间: |
|
| 查看次数: |
64019 次 |
| 最近记录: |