Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 文件存在测试在缓存文件夹上不工作。。。?_Android_File_Caching_Testing_Exists - Fatal编程技术网

Android 文件存在测试在缓存文件夹上不工作。。。?

Android 文件存在测试在缓存文件夹上不工作。。。?,android,file,caching,testing,exists,Android,File,Caching,Testing,Exists,我的程序检查默认缓存文件夹中是否存在特定文件。如果文件存在,它将打开文件并读取内容。如果该文件不存在,则会从web中提取该文件并将其存储在缓存文件夹中。我遇到的问题是,无论文件是否在缓存文件夹中,我的文件测试总是返回false。有趣的是,即使文件测试返回false,我仍然可以从缓存文件夹中打开文件并读取它。我可以提取缓存文件夹中的文件列表,我可以看到文件在那里,但是当我执行文件测试以查看文件是否在那里时,它返回false,即使我知道文件在那里,并且我可以打开它并查看其内容 我尝试了常规的exis

我的程序检查默认缓存文件夹中是否存在特定文件。如果文件存在,它将打开文件并读取内容。如果该文件不存在,则会从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);
  }
 }
String file=“test.txt”
String content=“测试”;
putFile(文件、内容);
布尔fileIsThere=checkFile(文件);
公共布尔校验文件(字符串文件){
布尔fileExists=false;
//常规文件测试-始终返回false,即使文件存在
文件f=新文件(文件);
如果(f.exists())
fileExists=true;
//比较目录中的每个文件-也返回false
字符串[]dirFiles=fileList();
对于(int i=0;i

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

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

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

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

如果要测试存储在上下文存储中的文件的存在性,必须像这样重写字符串文件

String file = "/data/data/nameOfPackage/files/test.txt"
然后可以检查test.txt文件的exists()方法。我希望它能帮助你。:)

如果(f.exists()&&f.length()>0)fileExists=true

这对我有用

如果(f.exists()&&f.length()>0)fileExists=true


这对我有用

putFile()中的“Context.MODE_PRIVATE”与此有关吗?“简单的方法是将其更改为更开放的内容。谢谢您的建议。我改变了一些事情,包括在SD卡上保存东西和在文件检查中包含路径。不确定是什么原因造成的,但它现在似乎起作用了,至少在保存到SD卡时是这样。我现在遇到了一些其他的问题,tho。“File fileDir=getCacheDir()”给出了NullPointException,因此在没有SD卡的情况下,我无法将缓存文件夹分配给变量。此外,出于某种原因,我现在从SD卡读取12kb的文件需要一分钟以上的时间。编程的乐趣!putFile()中的“Context.MODE_PRIVATE”与此有关吗?“简单的方法是将其更改为更开放的内容。谢谢您的建议。我改变了一些事情,包括在SD卡上保存东西和在文件检查中包含路径。不确定是什么原因造成的,但它现在似乎起作用了,至少在保存到SD卡时是这样。我现在遇到了一些其他的问题,tho。“File fileDir=getCacheDir()”给出了NullPointException,因此在没有SD卡的情况下,我无法将缓存文件夹分配给变量。此外,出于某种原因,我现在从SD卡读取12kb的文件需要一分钟以上的时间。编程的乐趣!不要像那样硬编码路径
openFileOutput()
提供了一个文件输出流,您可以将上下文相关的数据写入其中。以防代码检查存在性,但你是对的,不要硬编码这样的路径
openFileOutput()
提供了一个文件输出流,您可以将上下文相关的数据写入其中。以防有代码检查是否存在,但你是对的