如何获取我的应用程序可以保存大型 JPG 文件的文件夹的路径?getExternalStorageDirectory() 只有在 SD 卡存在时才能正常工作,但是当 SD 被移除或硬件没有 SD 卡插槽时会发生什么。谢谢
3 回答
您可以使用Context的 getFilesDir() 方法。从上下文中,您还可以使用方法获取缓存目录、外部缓存目录和外部文件目录。Activity 也是一个上下文,因此您可以在其中使用这些方法。
getFilesDir() 方法为您提供了您的文件只能从您的应用程序访问并且始终可用的文件夹。但是,您应该尽可能使用缓存目录。这样,您将避免使系统空间不足。
编辑:
我的回答:几乎总是一个设备要么有一个 SD 卡,要么有一个内置的外部存储。当它被内置时,它仍然被称为外部存储。要检查外部存储是可移动的(SD 卡)还是内置的,您可以在 Environment 中使用 isExternalStorageRemovable()。基本上,您不应该将大文件放在内部存储器上。内存中没有公用文件夹。如果设备没有外部存储,它根本无法做某些事情。就那么简单。因此,当没有外部存储时,您可以选择通知用户并要求他们插入卡。您不必处理这种情况,让用户处理它。
您要求的答案:尝试使用Context 对象的getDir(String name, int mode)和/或openFileOutput(String name, int mode),对于模式使用 MODE_WORLD_READABLE 或 MODE_WORLD_WRITEABLE。还要检查使用内部存储。
您正面临平台的预期限制,这些限制是为了每个人的利益。
您可以要求存在外部目录,也可以存储到内部目录。如果您选择允许两者,我建议您在内部空间中存储一个标志,以表明您已经在外部存储了一些东西,这样如果外部存储不存在,您可以采取适当的措施。
当您保存大型 JPG 文件时,最好将其保存在外部存储中,因为手机的内部存储器非常小,并且都会影响手机的性能。