Файл существует, тест не работает в папке кеша ...? - PullRequest
0 голосов
/ 30 ноября 2010

Моя программа проверяет, существует ли определенный файл в папке кэша по умолчанию.Если файл существует, он открывает его и читает содержимое.Если файл не существует, файл извлекается из Интернета и сохраняется в папке кэша.У меня проблема в том, что независимо от того, находится файл в папке кэша или нет, мой тест файла всегда возвращает false.Самое смешное, что, хотя проверка файла возвращает false, я все равно могу открыть файл из папки кэша и прочитать его.Я могу вытащить список файлов в папке кэша, и я вижу, что файл там, но когда я делаю тест файла, чтобы увидеть, есть ли файл, он возвращает ложь, хотя я знаю, что файл есть, и я могуоткройте его и посмотрите его содержимое.

Я попытался выполнить обычный тест exist () и даже прочитал каждый файл в каталоге кэша один за другим и сравнил имя с файлом, который я ищу, и все еще возвращает 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);
  }
 }

Есть идеи?Я думаю, что, поскольку я помещаю файлы в папку кеша, я всегда получаю ложь при проверке файлов.Я просто хочу посмотреть, сталкивался ли кто-нибудь еще с этим и имеет ли исправление, или мне нужно создать конкретный каталог и хранить там свои файлы, или что-то еще.Может ли "Context.MODE_PRIVATE" в putFile () иметь к этому какое-либо отношение?

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Если вы хотите проверить существование файла, хранящегося в вашем хранилище контекста data / data / nameOfPackage / files / text.txt вам нужно переписать строковый файл следующим образом

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

Затем вы можете проверить, существует метод () вашего файла test.txt. Я надеюсь, что это поможет вам. :)

0 голосов
/ 20 июня 2014

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

Это работает для меня!

...