0

ここに私が実行しているコードがあります:

        File root = android.os.Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

        File dir = new File(root.getAbsolutePath());
        dir.mkdirs();
        File file = new File(dir, "myData.txt");

        try {
            FileOutputStream f = new FileOutputStream(file);
            PrintWriter pw = new PrintWriter(f);
            pw.println("Hi , How are you");
            pw.println("Hello");
            pw.flush();
            pw.close();
            f.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
            android.util.Log
                    .i("tag",
                            "******* File not found. Did you add a WRITE_EXTERNAL_STORAGE permission to the   manifest?");
        } catch (IOException e) {
            e.printStackTrace();
        } 

コードは問題なく実行され、これらのテストを実行すると、ファイル システムにファイルが存在することがすべて示されます。

        File testFile = new File(dir, "myData.txt");
        Boolean exists = testFile.exists();//true
        Boolean hidden = testFile.isHidden();//false
        String[] files = dir.list();//list contains the file

しかし、ファイル エクスプローラー、ルート ブラウザー、またはターミナル エミュレーターでファイルが表示されません。そして、 によって照会されたファイルのリストは、 のdir.list()ルート ブラウザに表示されるものとは異なります/mnt/sdcard/DownloadsmyData.txtターミナルエミュレーターでファイルを検索しようとしましたfind / -name *myData*が、結果はありませんでした。

ルート化された s4 でコードを実行しています。AndroidManifest には WRITE_EXTERNAL_STORAGE 権限が含まれています。

これはなぜですか?また、ファイルを作成した後にユーザーに表示させるにはどうすればよいですか?

4

2 に答える 2

3

でインデックスを作成していないMediaScannerConnectionか、コンピュータがデバイスへの MTP 接続の結果をキャッシュしている可能性があります。

于 2013-08-07T16:26:11.747 に答える