在android中存储文件

时间:2016-08-08 09:12:51

标签: android android-sdcard android-memory

我想在android中存储文件。通过以下流程: -

if(sd card is available){
 //Store in sd card...
}else{
//If sd card is not available...
//Store in phone memory..
}

问题基本上是否有办法访问SD卡和内存路径?

我理解

  ContextWrapper cw       =   new ContextWrapper(getApplicationContext());
  File destinationDirForChequeImageInInternalMemory       =   cw.getDir("dirName", Context.MODE_PRIVATE);

始终提供内部存储位置。

是否保证存储位置在手机存储器中?

Environment.getExternalStorageDirectory()

以上行是否总是提供SD卡路径? 如果不是它返回什么? 有没有办法获得SD卡位置? (如果Environment.getExternalStorageDirectory返回手机内存路径,尽管设备中有sd卡。)

请详细了解如何执行此操作?

1 个答案:

答案 0 :(得分:1)

只需阅读上面的android文档。

https://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()

  

getExternalStorageDirectory

     

在API级别1中添加文件getExternalStorageDirectory()返回   主共享/外部存储目录。这个目录可能没有   如果用户已将其安装在其上,则目前可以访问   电脑,已从设备中删除,或其他一些问题   发生了。您可以使用确定其当前状态   getExternalStorageState()。

     

注意:这里不要混淆“外部”这个词。这个目录   可以更好地被视为媒体/共享存储。它是一个文件系统   可以容纳相对大量的数据,并且可以共享   所有应用程序(不强制执行权限)。传统上这是   SD卡,但它也可以作为内置存储器实现   与受保护的内部存储区别的设备,可以是   作为文件系统安装在计算机上。

     

在具有多个用户的设备上(如UserManager所述)   用户拥有自己独立的共享存储。应用程序只有   访问他们正在运行的用户的共享存储。

     

在具有多个共享/外部存储目录的设备中,这个   directory表示用户将与之交互的主存储   用。可通过访问二级存储   getExternalFilesDirs(String),getExternalCacheDirs()和   getExternalMediaDirs()。

     

应用程序不应直接使用此顶级目录   以避免污染用户的根命名空间。任何文件   私有应用程序应放在由返回的目录中   Context.getExternalFilesDir,系统将负责处理   删除应用程序是否已卸载。其他共享文件应该   被放置在其中一个目录中   getExternalStoragePublicDirectory(字符串)。

     

写入此路径需要WRITE_EXTERNAL_STORAGE权限,   并且从KITKAT开始,读访问需要READ_EXTERNAL_STORAGE   权限,如果您持有写入,则自动授予   权限。

     

从KITKAT开始,如果您的应用程序只需要存储内部   数据,考虑使用getExternalFilesDir(String),   getExternalCacheDir()或getExternalMediaDirs(),它们不需要   读或写的权限。

     

此路径可能会在平台版本之间发生变化,因此应用程序应该   只坚持相对路径。