【问题标题】:Android getFilesDir() vs getDir() - What do I use to save files in my apps private data?Android getFilesDir() vs getDir() - 我用什么来保存我的应用程序私有数据中的文件?
【发布时间】:2013-08-16 18:24:49
【问题描述】:

我理解这个问题很相似:What is the difference between getDir and getFilesDir on Android?

但是,当我只想将文件保存在我的私人数据中时,我仍然不确定该使用什么。

对于目录,我应该只使用data/data/com.test.myapp 吗?这会让我的应用程序私有化吗?

// Gets the absolute path to the filesystem directory where your internal files are saved.
getFilesDir()

// Creates (or opens an existing) directory within your internal storage space.
getDir()

我也尝试过阅读一些通用软件开源项目,但我想我对整个 getExternalFilesDir() 更加困惑,因为 Android 没有将内部存储(非 SD 卡)称为“外部" 某个 api 级别之后的存储?

【问题讨论】:

  • getFilesDir() 本质上是 getDir("files")。这是放置应用程序私有数据的好地方。

标签: java android


【解决方案1】:

当我只想将文件保存在我的私人数据中时,我仍然不确定该使用什么

getFilesDir() 会很好地工作。

对于目录,我应该只使用 data/data/com.test.myapp 吗?

从不硬编码目录。

这会让我的应用程序私有化吗?

getFilesDir() 对您的应用程序是私有的(例外:已将其设备植根并以超级用户权限运行应用程序的用户)

我不知道getDir() 有什么真正好的用途,我不推荐它。

因为 Android 不是在某个 api 级别之后将内部存储(非 sdcard)称为“外部”存储吗?

在 Android 1.0 之前就存在外部存储。

内部存储大致意味着“您的应用程序私有”(除非您采取特定步骤使其成为非私有)。外部存储大致意思是“对用户和其他应用可见”。

a book that I know that you own :-) 中,您将在“资产、文件和数据解析”一章中找到有关内部和外部存储的更多详细信息。

【讨论】:

  • 清晰简洁。一如既往。再次感谢。另外,我买过的最好的书=)
  • +1,但是最好提一下,你不应该对目录进行硬编码,因为不同的 android 设备/版本的 android 将文件放在不同的位置。这尤其棘手,因为它可能适用于您正在测试的任何设备,只是为了打破您在其他手机上尝试它的那一刻。
  • @Prime:虽然/data/data/your.package.name/ 通常是使用的,但设备肯定有可能做一些奇怪的事情。此外,Android 4.2+ 将为平板电脑上的辅助帐户使用不同的位置。 getFilesDir() 消除了这些问题,并且启动时间更短。 :-)
猜你喜欢
  • 2012-07-31
  • 2019-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-11
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
相关资源
最近更新 更多