我正在尝试检查文件是否在android sd卡上退出...所以我这样做:
File f=new File(sdpath + "/" + DATABASE_NAME); //
if(!f.exits()) {
...create new file..
}
else {
...do something...
}
每次这实际上都会在SD卡上创建目录或文件。
我知道它不存在,并且当新文件被执行时,它被创建并且它不应该?
我在google上读到新文件并没有在文件系统上创建实际文件,但在我的情况下它确实...
检查文件/目录是否退出而不使用新文件的任何替代方法。
编辑1:嗯,我只想添加(4年后:) :)这个问题只发生在我写这篇文章时的两个设备上,再也没有,其中一个是HTC Desire C with android 4.0,另一个是华为与android 2.x,不能再记得了。
答案 0 :(得分:3)
出于某种奇怪的原因,事实证明新文件每次都创建了一个目录......
而不是检查if (!f.exists())
,我将其更改为检查if (!f.isFile())
在这种情况下,我创建一个新文件,它运行良好,下次我运行它时,文件已经在SD卡上了...
答案 1 :(得分:2)
有效的方式几乎与你的一样:
File f = new File(Environment.getExternalStorageDirectory(), "a directory");
if(!f.exists){
// do something
}
并检查文件是否存在几乎相同:
File f = new File(Environment.getExternalStorageDirectory() + "/a directory/" + "a file");
if(!f.exists){
// do something
}
我希望它可以帮助你,因为它没有在我的应用程序中创建文件或目录。它只是检查了路径。
答案 2 :(得分:0)
这可能会对您有所帮助,请尝试
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
//handle case of no SDCARD present
} else {
File file = new File(Environment.getExternalStorageDirectory()
+File.separator
+"myDirectory" //folder name
+File.separator
+"myFile.example"); //file name
if(file.exists()){
Toast.makeText(MainActivity.this, "Not Create ", 12).show();
}else{
file.mkdirs();
Toast.makeText(MainActivity.this, "Create ", 12).show();
}
}
答案 3 :(得分:0)
试试这个
File[] files = filedir.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
Toast.makeText(this, "directory", Toast.LENGTH_LONG).show();
} else {
if (file2.getName().equals(DATABASE_NAME)) {
Toast.makeText(this, "File found",Toast.LENGTH_LONG).show();
}
else{Toast.makeText(this, "File not found",Toast.LENGTH_LONG).show();
}
}
}