new File(path) always actually creates a file on android?

孤者浪人 提交于 2019-12-10 10:13:58

问题


I am trying to check if a file exits on android sd card...so i do:

File f=new File(sdpath + "/" + DATABASE_NAME); //   
if(!f.exits()) {
...create new file..
}
else {
...do something...
}

Every time this actually creates the directory or file on the sd card.

I know it doesnt exist, and when the new File is executed it is created and it shouldnt ?

I read all across google that new File doesnt create an actual file on the file system , but in my case it does...

Any alternatives to checking if a File/directory exits without using new File..

Edit 1: Well I'd just like to add (after 4 years :)) that this problem occurred only on two devices at the time i was writing the post and never again, one of them was HTC Desire C with android 4.0 and the other was some Huawei with android 2.x, cant remember anymore.


回答1:


For some strange reason it turned out that new File created a directory every time...

instead of checking if (!f.exists()), I changed it to checking if (!f.isFile())

In that case i create a new file and it works good, the next time i run it the file is already on the sd card...




回答2:


The way that worked was nearly like yours:

File f = new File(Environment.getExternalStorageDirectory(), "a directory");
if(!f.exists){
// do something
}

and to check whether a file exists or not is almost the same way:

File f = new File(Environment.getExternalStorageDirectory() + "/a directory/" + "a file");
if(!f.exists){
// do something
}

I hope it can help you out, because it didn't create a file or directory in my app. It just checked the path.




回答3:


this may helps you, try like

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();
                    }

                }



回答4:


Try this

    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();
        }
}
}


来源:https://stackoverflow.com/questions/15948236/new-filepath-always-actually-creates-a-file-on-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!