您已经提出了几个问题,但您需要做的只是在继续任何文件写入操作之前简单检查一下是否有可用的存储内存。
您可以使用此实用程序方法快速检查设备上的可用存储空间,
public static long getAvailableInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize, availableBlocks;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
blockSize = stat.getBlockSizeLong();
availableBlocks = stat.getAvailableBlocksLong();
} else {
blockSize = stat.getBlockSize();
availableBlocks = stat.getAvailableBlocks();
}
return availableBlocks * blockSize;
}
如您所知,您可以使用文件的length()
方法获取文件的大小。它将返回每个文件的大小(以字节为单位)。
您需要做的就是将您打算写入的文件的大小与可用的存储内存进行比较。如果您的文件大小小于可用的总存储空间,您可以继续写入文件。