2016-03-23 2 views
0

je suis en train de copier le répertoire entier pour le stockage usb:comment copier le répertoire (dossier) au stockage usb

File Sdfile = new File(Environment.getExternalStorageDirectory(), "myfolder"); 

       Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); 

       intent.setType("*/*"); 
       intent.setType(DocumentsContract.Document.MIME_TYPE_DIR);//For API 19+ 
       intent.putExtra(Intent.EXTRA_TITLE, Sdfile.getName()); 
       intent.putExtra("android.content.extra.SHOW_ADVANCED", true); 
       startActivityForResult(intent, 47); 


    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 


     if (requestCode == 47) { 
      if (resultCode != RESULT_OK) return; 
      File file = new File(Environment.getExternalStorageDirectory(), "myfolder"); 
      copyFile(file, data.getData()); 

     } 

Ci-dessous le code est pour copier le dossier entier pour le stockage USB.

private void copyFile(File src, Uri destUri) { 
     BufferedInputStream bis = null; 
     BufferedOutputStream bos = null; 

     try { 
      bis = new BufferedInputStream(new FileInputStream(src)); 
      bos = new BufferedOutputStream(getContentResolver().openOutputStream(destUri)); 
      byte[] buf = new byte[5024]; 
      bis.read(buf); 
      do { 
       bos.write(buf); 
      } while (bis.read(buf) != -1); 
     } catch (NullPointerException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (bis != null) bis.close(); 
       if (bos != null) bos.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

Lorsque j'essaye de copier le dossier entier alors il donne une erreur.

Même si je copie directement le dossier entier au stockage d'usb.

Comment puis-je copier un répertoire entier?

+0

Vous devez obtenir extractly chemin du dossier usb où vous voulez copier – GiapLee

+0

Mais comment obtenir ce chemin de dossier d'usb? – deepak

Répondre

0

Je suppose que votre application n'a pas les permissions correctes. Pour les versions Android ci-dessous KitKat, vous devez déclarer la WRITE_EXTERNAL_STORAGE d'autorisation dans votre AndroidManifest.xml

<user-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Référence: http://developer.android.com/reference/android/Manifest.permission.html#WRITE_EXTERNAL_STORAGE

+0

j'ai donné toute la permission deepak

+0

Je suis confondu avec vos 's'' s'c' et' dest' '' ' Chaîne filePath = src +"/"+ destUri; Fichier f = nouveau fichier (chemin de fichier); bis = new BufferedInputStream (nouveau FileInputStream (f)); bos = nouveau BufferedOutputStream (nouveau FileOutputStream (destUri)); '' ' Est-ce que' bis' ne devrait pas pointer vers 'src'? et 'bos' pointe sur' filePath'? 'destUri' semble trompeur quand ce n'est pas le chemin de destination direct. Et à partir du code ci-dessus, vous copiez un fichier du stockage USB dans son dossier enfant? –