0

外部ストレージにフォルダを作成しました。デバイスでは、これらのフォルダーは適切に作成されており、それらを表示して使用できます。PC を USB に接続すると、これらの作成されたフォルダーを PC に表示したいのですが、作成されたフォルダーのいずれも表示できませんでした。その後、特定のフォルダーパスのメディアスキャンに MediaScannerConnection クラスを使用しました。その後、作成されたフォルダーを表示できますが、特定のパスの最も内側のフォルダーが正しく表示されません。たとえば、3つのフォルダーを(実用的に)作成し、たとえば、電話の外部ストレージにフォルダーabc/def/hを作成したいとします。Eclipseのファイルエクスプローラーのパスはmnt/shell/emulated/0/abc/def/ですh で、携帯電話では、ファイル マネージャーの内部ストレージ/abc/def/h で確認できます。しかし、問題はMEdia Scannerを使用した後、PCのフォルダーが表示されますが、最も内側のフォルダー「h」です 私が作成したファイルは、フォルダのように似ておらず、フォルダではなく4kbのファイルになります。このように、たくさんのフォルダーを作成する場合、最も内側のフォルダーはファイルフォルダーのタイプではなく、ファイルのみのタイプです..メディアスキャナーを使用せず、電話の電源をオフにして電源をオンにすると、適切に機能するよりも電源が入った後を意味しますon/off 作成されたフォルダはすべてき​​ちんと表示されます。しかし、私は作成直後に作成されたフォルダを見たい.私のコードは次のとおりです

public void ReadFileAndMakeFolders(Context context){
    File file3;
    File file2;

     String[] splitedString;

     try {  

         //Attaching BufferedReader to the FileInputStream by the help of InputStreamReader  
         FileInputStream fis = context.openFileInput("databaseee.txt");

           InputStreamReader isr = new InputStreamReader(fis,"UTF-8");

           BufferedReader bufferedReader = new BufferedReader(isr);

           int i=0;
         String inputString;  
         //Reading data line by line and storing it into the stringbuffer                
         while ((inputString = bufferedReader.readLine()) != null) {  
             i++;

             splitedString = inputString.trim().split("\\s+");
             Toast.makeText(this, splitedString.length+""+ splitedString[1], Toast.LENGTH_SHORT).show();




              file2 = new File(splitedString[1]);
             file3 = file2.getParentFile();
            Log.i("mistake",file3.toString());


             String state = Environment.getExternalStorageState();

             if (Environment.MEDIA_MOUNTED.equals(state)) {
                 Toast.makeText(this, state, Toast.LENGTH_SHORT).show();

             }
                 File path = Environment.getExternalStorageDirectory();

                    File file = new File(path, file3.toString());




                 if (file.mkdirs()) {
                     Toast.makeText(this, "created" , Toast.LENGTH_SHORT).show();


                 }


                MediaScannerConnection.scanFile(this, new String[] { file.toString() }, null,
                            new MediaScannerConnection.OnScanCompletedListener() {
                                public void onScanCompleted(String path, Uri uri) {
                                    Log.i("ExternalStorage", "Scanned " + path + ":");
                                    Log.i("ExternalStorage", "-> uri=" + uri);
                                }
                    });









         }  
         fis.close();
         bufferedReader.close();
         isr.close();




     } catch (IOException e) {  
         e.printStackTrace();  
     }  
     //Displaying data on the toast  




 }  
4

1 に答える 1