【问题标题】:Android - How to catch java.io.IOException: no space left on deviceAndroid - 如何捕获 java.io.IOException:设备上没有剩余空间
【发布时间】:2012-02-16 08:44:01
【问题描述】:

只是为了清除它,这是在实际设备上而不是模拟器上。 我设置了一个文件来存储图像,突然设备会在 logcat 中给出一个 no space left on device 警告。我可以看到我在内存中还有空间,但由于某种原因它不会保存更多文件。我使用小数字来命名图像,所以我没有疯狂的名称大小。

现在我的文件中有大约 80 张左右的图像,然后才会出现该错误。

我想我可以捕捉到空间不足错误并清空文件,我知道我可能应该通过检查空间实际有多少以及我还剩下多少空间来做到这一点,但我还没有试图弄清楚这一点。

我遇到的另一个问题是我告诉应用程序将数据存储在 sd 卡上

android.os.Environment.getExternalStorageDirectory();

但它将数据存储在内部存储器中。我已经设置了所有权限和一切,但由于某种原因,它存储在内部而不是外部。

所以有人可以向我指出一些关于如何检查可用于存储我的应用程序的内存量的信息,以及一些关于为什么我在尝试存储在外部时最终存储到内部的一些提示。

【问题讨论】:

  • 我也没有空间容纳用户可以在手机上拍摄的新图像,这很奇怪。当我使用应用内摄像头时,它永远不会将文件保存到我为存储它而设置的目录中。我是否有可能达到我的应用可以使用的数据量的限制或其他什么?

标签: android memory file-io out-of-memory


【解决方案1】:

你应该使用android.od.Environment.getExternalStorageDirectory.getPath()

签出this

【讨论】:

  • 您好,感谢您的回复。关于为什么将所有内容置于内部存储器的任何想法?
  • 我猜,但如果你没有使用 .getPath(),它可能会默认为内部存储器。我有保存图像的应用程序。我所做的是在外部存储器中创建一个新文件夹,将其附加到路径并保存图像。
  • 酷我试一试,然后把结果发回来:)
  • 没有这样做,因为正在使用的目录应该在 sd 上。通过使用 .getPath() 它只将 mnt/sdcard 添加到一个类似于 mnt/sdcard/data/ 的地址......我猜我得做更多的研究
  • 参考this
猜你喜欢
  • 2018-12-13
  • 2017-12-06
  • 2018-05-12
  • 1970-01-01
  • 2012-12-29
  • 2012-01-14
  • 2012-05-15
  • 2018-11-22
  • 2015-07-21
相关资源
最近更新 更多