1

我在android中遇到了一个很奇怪的问题:

在我的应用程序中,我将从缓存目录上传文件。如果用户在我的应用上传文件时使用 cleanmaster 等更清洁的应用清除我的应用的缓存目录,则所有文件都会被删除,但上传任务根本不会停止,并且稍后会成功完成而不会丢失任何数据。此外,虽然这些“无源文件任务”仍在上传,但我无法再访问缓存目录,例如,如果我想在缓存目录中创建一个新文件,我会收到“ebusy”错误。

我的应用在上传任务中使用 FileInputStream 打开、读取数据表单文件如下:</p>

InputSream in = new FileInputStream(file);
byte[] buffer = new byte[4 * 1024];
int bytes;
while ((bytes = in.read(buffer)) != -1) {
    netOutputStream.write(buffer, 0, bytes);
}
in.close();

我假设系统在 FileInputStream 打开时缓存了文件,我该如何禁用缓存?我想要的是:如果文件被删除,从流中读取抛出错误并且我的上传任务停止。

我的问题:

  1. 为什么在删除源文件时仍然可以读取 FileInputSream
  2. 为什么缓存目录被谁锁定了?
  3. 我的情况有什么解决办法吗?
4

0 回答 0