首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目录来保存android中的文件?

目录来保存android中的文件?
EN

Stack Overflow用户
提问于 2012-06-18 07:02:57
回答 3查看 1.7K关注 0票数 0

根据我的应用程序,我正在下载图片和一些数据,我需要将它们保存在手机内存或sd卡的某个地方。因为照片可能很大,所以我决定把它保存到sd卡中。我正在使用下面的代码来确定sd卡是否可用。如果是的话,我使用SD卡,如果不是,我使用的是手机内存。但是问题是,如果我弹出SD卡,我的应用程序会在启动时崩溃,而我得到的文件没有找到异常。据我所知,由于手机内部有SD卡,

代码语言:javascript
复制
android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)

总是返回“骑行”。我怎样才能理解外部SD卡真的被弹出了?

编辑:我试着检查SD卡是否可用,因为我正在使用下面的代码,而且我的手机中有内部SD卡

代码语言:javascript
复制
android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)

始终返回true,并创建没有和SD卡的目录。因此,检查目录中的null并不能理解文件是否存在。下面是我的代码。

代码语言:javascript
复制
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {
        cacheDir=new File(context.getExternalFilesDir(null), applicationDirectory + folderName);
    }
    else {
        cacheDir = new File(context.getCacheDir(), applicationDirectory + folderName);
    }
    if(!cacheDir.isDirectory())
        cacheDir.mkdirs();

因此,根据我的解决方案,我尝试读取所需的文件,如果我获得FileNotFoundException,我会在应用程序启动时将所有内容从资产文件夹(SD卡或电话内存)复制到目录中,并使用共享首选项中的布尔值控制它。这样,如果用户弹出SD卡,内容将被复制到电话内存,并将从该目录工作。

我需要大约10 my的缓存空间来保存我的一些文件,使用这个解决方案(我不确定它是否有效),如果用户没有SD卡运行应用程序,我将在SD卡和电话内存中同时保存我的内容。还有其他的解决方案来找出保存文件的地方,外部还是内部内存?谢谢你的回答。任何想法都会感激的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-18 07:07:34

您可以使用这些方法检查外部sd上的文件夹是否存在:

代码语言:javascript
复制
if(myFolder != null && myFolder.exists()) { /* work here */ }

myFolder将是一个针对外部sd的文件(您应该检查内部内存中的供应商映射,因为它们与每个供应商的vor不同)。

可悲的是,两个sds并不是真正的Android方式,这导致Android认为内部sd是外部的。

有一个寻找外部sd here的讨论和代码示例。

票数 1
EN

Stack Overflow用户

发布于 2012-06-18 07:08:45

检查这个线程:

How android application detects two SD CARDS in a device

也许您可以检查一下sdcards的文件夹是否存在,并处理卡不存在不同的情况?

所以,就像:

代码语言:javascript
复制
sdcardloc = /mnt/sdcard/sdcard1;
if(sdcardloc != null && myFolder.exists()) { /*case where card is mounted*/ }

else { /*handle case where no card is mounted*/}
票数 1
EN

Stack Overflow用户

发布于 2012-06-18 07:10:36

外部SD卡,这个概念是专门针对设备供应商的。在android中只有外部存储的概念。Environment.getExternalStorageDirectory()也是指设备制造商认为是“外部存储”的任何东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11078231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档