防止应用程序从java.io.IOException崩溃:写入失败:ENOSPC(设备上没有剩余空间)

问题描述 投票:0回答:1

[尝试写入设备时,当设备已满时,出现错误:com.google.gson.JsonIOException: java.io.IOException: write failed: ENOSPC (No space left on device)。我有一个try-catch块来捕获IOException,还有几行检查列表的大小和可用的存储空间,以确定是否有空间写入文件,但是仍然使应用程序崩溃,我得到了上面提到的IOException 。

这里是代码:

File file = new File(getExternalFilesDir(null), fileName+".txt");
int file_size = Integer.parseInt(String.valueOf(file.length()/1024));
long storage_size = (getAvailableInternalMemorySize()/1024);
long list_size = listToWrite.toString().getBytes().length/1024;
long total_size = file_size + list_size;
if(total_size < storage_size) {
    try (Writer writer = new FileWriter(file, false)) {
        Gson gson = new GsonBuilder().create();
        gson.toJson(listToWrite, writer);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

有没有一种方法可以阻止应用程序崩溃,仅向用户显示Toast消息或执行某些操作。

java android ioexception
1个回答
0
投票

在清单文件中添加此属性:

android:installLocation="preferExternal"
© www.soinside.com 2019 - 2024. All rights reserved.