0

.txt ファイルが存在するかどうかを知るために、Android でこのコードを書きました。

    File file_a =new File("a.txt");

 InputStream in3 = getResources().openRawResource(R.raw.b);
         FileOutputStream out3 = null;


        try {   out3=openFileOutput("a.txt",Context.MODE_WORLD_WRITEABLE);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
         byte[] buff3 = new byte[1024];
         int read3 = 0; 

         try {
            while ((read3 = in3.read(buff3)) > 0) {
               out3.write(buff3, 0, read3);
            }
         } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace(); 
        } finally {
              try {
                in3.close();
                out3.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

         }

    boolean a=file_a.exists();

常に を返しますfalse

どうすればこれを修正できますか?

4

5 に答える 5

1

ファイルをまったく作成していません。ファイルハンドルをインスタンス化するだけです。

于 2012-09-30T14:23:14.447 に答える
1

File存在しない場合は作成できます

これを使って

if(!file.exist()){
file.createNewFile( ); 
} 

その後、電話file.exist();すると戻ってきますtrue

于 2012-09-30T14:26:17.260 に答える
0

常にfalseが返されるとは限りません。

File#exists()この抽象パス名で示されるファイルまたはディレクトリが存在する場合にのみtrueを返します。それ以外の場合はfalse。

新しいファイルを作成している場合は、それを呼び出す必要がFile#createNewFileあります。正常に作成された場合はtrueを返し、それ以外の場合はfalseを返します。

ファイルはすでに作成されているのでFile#getAbsolutePath()、ファイルの絶対パスが同じかどうかを確認できます。

于 2012-09-30T14:21:02.123 に答える
0

ファイル名だけでなく、ファイルへのパスも指定する必要があります。ファイルがルートディレクトリのSDカードにあると仮定します:

File file_a = new File(Environment.getExternalStorageDirectory() + "/a.txt"); 
boolean a=file_a.exists();

サブディレクトリにある場合は、残りのパスを追加します。

    File file_a = new File(Environment.getExternalStorageDirectory() + "yourpath/a.txt"); 

ファイルを内部ストレージに書き込んだ場合、それは「data/data/your.package.name」パスのどこかにあるので、それを使用してください。

    File file_a = new File(Environment.getExternalStorageDirectory() + "date/data/your.package.name/a.txt"); 
于 2012-09-30T14:36:49.700 に答える
0

解決策が見つかりました。キャッチブロックが存在しない場合は、読み取りファイルを試しました。みんな、ありがとう。

try {
        FileInputStream deneme=openFileInput("a.txt");
    } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
         kopyala();
        e1.printStackTrace();
    }
于 2012-09-30T14:34:06.277 に答える