文件存在测试对缓存文件夹不起作用......?

时间:2010-11-30 05:00:57

标签: android file caching testing exists

我的程序检查默认缓存文件夹中是否存在特定文件。如果文件存在,则打开它并读取内容。如果该文件不存在,则该文件将从Web中提取并存储在缓存文件夹中。我遇到的问题是,无论文件是否在缓存文件夹中,我的文件测试总是返回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”可以与它有关吗?

2 个答案:

答案 0 :(得分:1)

如果要测试存储在上下文存储 data / data / nameOfPackage / files / text.txt 中的文件的存在,则必须像这样重写String文件

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

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

答案 1 :(得分:0)

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

这对我有用!