【问题标题】:File exists test does not work on cache folder...?文件存在测试不适用于缓存文件夹...?
【发布时间】:2011-05-17 16:14:15
【问题描述】:

我的程序检查默认缓存文件夹中是否存在特定文件。如果文件存在,它会打开它并读取内容。如果该文件不存在,则该文件将从网络中提取并存储在缓存文件夹中。我遇到的问题是,无论文件是否在缓存文件夹中,我的文件测试总是返回 false。有趣的是,即使文件测试返回 false,我仍然可以从缓存文件夹中打开文件并读取它。我可以提取缓存文件夹中的文件列表,我可以看到文件在那里,但是当我进行文件测试以查看文件是否在那里时,它返回 false,即使我知道文件在那里并且我可以打开它,看看里面的内容。

我尝试了常规的 exists() 测试,甚至一一读取缓存目录中的每个文件,并将名称与我要查找的文件进行比较,但仍然返回 false。

提前感谢您的帮助!

String file = "test.txt"
String content = "testing";

 putFile(file, content);
 Boolean fileIsThere = checkFile(file);

 public Boolean checkFile(String file){
  Boolean fileExists = false;

  // regular file test - always returns false, even if the file is there
  File f = new File(file);
  if (f.exists())
   fileExists = true;

  // comparing each individual file in the directory - also returns false
  String[] dirFiles = fileList();
  for (int i = 0; i < dirFiles.length; i++) {
   if (dirFiles[i] == file){
    fileExists = true;
    break;
   }
  }

  return fileExists;
 }


 public void putFile(String file, String content){
  try {
   FileOutputStream fos = openFileOutput(file, Context.MODE_PRIVATE);
   fos.write(content.getBytes());
   fos.close();
  } catch (Exception e) {
   Log.w("putFile", "Error (" + e.toString() + ") with: " + file);
  }
 }

有什么想法吗?我在想,因为我将文件放在缓存文件夹中,所以我在文件测试中总是会出错。我只是想看看是否有其他人遇到过这个问题并对其进行了修复,或者我是否必须创建一个特定的目录并将我的文件存储在那里,或者其他什么。 putFile() 中的“Context.MODE_PRIVATE”会不会和它有什么关系?

【问题讨论】:

  • "putFile() 中的 "Context.MODE_PRIVATE" 与它有什么关系吗?"找出答案的简单方法是将其更改为更开放的内容。
  • 感谢您的建议。我改变了一些东西,包括在 sdcard 上保存东西和在我的文件检查中包括路径。不知道它做了什么,但它现在似乎正在工作,至少在保存到 SD 卡时。我现在遇到了其他一些问题。 “File fileDir = getCacheDir()”给出了 NullPointException,所以当没有 sdcard 时,我无法将缓存文件夹分配给变量。此外,由于某种原因,我现在从 sdcard 读取 12kb 文件需要超过一分钟的时间。编程的乐趣!

标签: android file caching testing exists


【解决方案1】:

如果你想测试存储在你的上下文存储中的文件是否存在 data/data/nameOfPackage/files/text.txt 你必须像这样重写字符串文件

String file = "/data/data/nameOfPackage/files/test.txt"

然后您可以检查 test.txt 文件的 exists() 方法。我希望它会帮助你。 :)

【讨论】:

【解决方案2】:

if (f.exists() && f.length() > 0) fileExists = true;

这对我有用!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    相关资源
    最近更新 更多