4

ファイルがAndroid SDカードに存在するかどうかを確認しようとしています...だから私はそうします:

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

これにより、実際にSDカードにディレクトリまたはファイルが作成されるたびに。

私はそれが存在しないことを知っています、そして新しいファイルが実行されるとそれは作成されるべきではありませんか?

新しいファイルがファイルシステム上に実際のファイルを作成しないことをGoogle全体で読みましたが、私の場合は...

新しいファイルを使用せずにファイル/ディレクトリが存在するかどうかを確認する代替手段..

編集1:まあ、(4年後:))この問題は、私が投稿を書いていた時点で2つのデバイスでのみ発生し、そのうちの1つはAndroid 4.0を搭載したHTC Desire Cであり、もう1つは、Android 2.xを搭載したHuaweiでしたが、もう思い出せません。

4

4 に答える 4

3

何らかの奇妙な理由で、新しいファイルが毎回ディレクトリを作成することが判明しました...

チェックの代わりに、チェックif (!f.exists())に変更しましたif (!f.isFile())

その場合、新しいファイルを作成するとうまくいきます。次に実行すると、ファイルはすでにSDカードにあります...

于 2013-04-11T13:03:44.203 に答える
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
}

アプリにファイルやディレクトリが作成されなかったため、お役に立てば幸いです。パスを確認しただけです。

于 2013-04-11T12:06:34.660 に答える
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();
                    }

                }
于 2013-04-11T12:02:36.040 に答える
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();
        }
}
}
于 2013-04-11T12:09:20.173 に答える