0

以下のコードを使用して、アセットから SD カードにファイルをコピーしています。

コード:

  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 カードにファイルをコピーできます。しかし、その代わりに、コピーファイルをSDカードで利用可能な別のディレクトリに保存したいと考えています。

では、どうやってそれを行うのですか??

ありがとう。

4

1 に答える 1

2

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

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());
} 
于 2012-01-27T13:58:15.003 に答える