Android 文件存在测试在缓存文件夹上不工作。。。?
我的程序检查默认缓存文件夹中是否存在特定文件。如果文件存在,它将打开文件并读取内容。如果该文件不存在,则会从web中提取该文件并将其存储在缓存文件夹中。我遇到的问题是,无论文件是否在缓存文件夹中,我的文件测试总是返回false。有趣的是,即使文件测试返回false,我仍然可以从缓存文件夹中打开文件并读取它。我可以提取缓存文件夹中的文件列表,我可以看到文件在那里,但是当我执行文件测试以查看文件是否在那里时,它返回false,即使我知道文件在那里,并且我可以打开它并查看其内容 我尝试了常规的exists()测试,甚至一个接一个地读取缓存目录中的每个文件,并将名称与我要查找的文件进行比较,但仍然返回false 提前谢谢你的帮助Android 文件存在测试在缓存文件夹上不工作。。。?,android,file,caching,testing,exists,Android,File,Caching,Testing,Exists,我的程序检查默认缓存文件夹中是否存在特定文件。如果文件存在,它将打开文件并读取内容。如果该文件不存在,则会从web中提取该文件并将其存储在缓存文件夹中。我遇到的问题是,无论文件是否在缓存文件夹中,我的文件测试总是返回false。有趣的是,即使文件测试返回false,我仍然可以从缓存文件夹中打开文件并读取它。我可以提取缓存文件夹中的文件列表,我可以看到文件在那里,但是当我执行文件测试以查看文件是否在那里时,它返回false,即使我知道文件在那里,并且我可以打开它并查看其内容 我尝试了常规的exis
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()
提供了一个文件输出流,您可以将上下文相关的数据写入其中。以防有代码检查是否存在,但你是对的