2012-01-27 5 views
0

以下のコードを使用して、アセットからSdcardにファイルをコピーしています。アセットフォルダからディレクトリとストアファイルを作成するにはどうすればいいですか?

コード:今すぐ

File file3 = new File("/sdcard/Alone.mp4"); 
    if(!(file3.exists())) { 
     ArrayList<String> files = new ArrayList<String>(); 
     files.add("Alone.mp4"); 
     new myAsyncTask().execute(files); 
    } 

// AsyncTass for the Progress Dialog and to do Background Process 
private class myAsyncTask extends AsyncTask<ArrayList<String>, Void, Void> {   
    ArrayList<String> files;   
    ProgressDialog dialog;   
    @Override   
    protected void onPreExecute() {    
     dialog = ProgressDialog.show(MainScreenActivity.this, "Speech Tutor", "Loading...");   
    }   
    @Override   
    protected Void doInBackground(ArrayList<String>... params) {    
     files = params[0];    
     for (int i = 0; i < files.size(); i++) {     
      copyFileFromAssetsToSDCard(files.get(i));     
     }    return null;   
    }   
    @Override   
    protected void onPostExecute(Void result) {    
     dialog.dismiss();   
    }  
} 

    // Function to copy file from Assets to the SDCard 
    public void copyFileFromAssetsToSDCard(String fileFromAssets){ 
     AssetManager is = this.getAssets(); 
     InputStream fis; 
     try { 

      fis = is.open(fileFromAssets); 
      FileOutputStream fos; 
//   if (!APP_FILE_PATH.exists()) { 
//    APP_FILE_PATH.mkdirs(); 
//   } 
      fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory(),fileFromAssets)); 
      byte[] b = new byte[8]; 
      int i; 
      while ((i = fis.read(b)) != -1) { 
       fos.write(b, 0, i); 
      } 
      fos.flush(); 
      fos.close(); 
      fis.close(); 
     } 
     catch (IOException e1) { 
      e1.printStackTrace(); 
     } 
    } 

、上記のコードで、私はSDカードへの資産からファイルをコピーすることができています。代わりにコピーファイルをsdcardで利用可能な別のディレクトリに保存しておきます。

どのようにするには?

ありがとうございました。

+0

あなたがAPKからこれらのファイルをどのような理由でコピーしたいのですか? – JimmyB

答えて

2

ファイルをsdcardの特定のフォルダに保存する場合は、次のコードを使用します。

Environment.getExternalStorageDirectory()+「/フォルダ名/」

そして、あなたは新しいフォルダを作成するために楽しみにしている場合は、次のコードです。

String tempDir = Environment.getExternalStorageDirectory() + "/" + getResources().getString(R.string.foldername) + "/"; 
    prepareDirectory(); 


private boolean prepareDirectory(){ 
    try { 
     if (makedirs()){ 
      return true; 
     } else { 
      return false; 
     } 
    } catch (Exception e){ 
     e.printStackTrace(); 
     Toast.makeText(this, "Could not initiate File System.. Is Sdcard mounted properly?", 1000).show(); 
     return false; 
    } 
} 

private boolean makedirs(){ 
    File tempdir = new File(tempDir); 
    if (!tempdir.exists()) 
     tempdir.mkdirs(); 

    if (tempdir.isDirectory()){ 
     File[] files = tempdir.listFiles(); 
     for (File file : files){ 
      if (!file.delete()){ 
      } 
     } 
    } 
    return (tempdir.isDirectory()); 
} 
+0

これはあなたが探しているものだと思います。 –

+0

@anija:実際には自分のコードの解決策が必要です。しかし、とにかく私はそれを解決しています。ありがとう。 –

関連する問題