2

アプリケーションに表示する画像がいくつかあります(ギャラリーから選択するなど、ユーザーが画像を選択したとき)。

問題は、コード内の assets フォルダーに入れている画像を SD カードのフォルダーにコピーする方法です。

4

3 に答える 3

3
AssetManager assetManager = context.getAssets();
InputStream is = assetManager.open(fileName);

を取得し、コピーするファイル名をパラメーターとしてAssetManager呼び出しopenます。次に、この方法で簡単にコピーできます

File out = new File(Environment.getExternalStorageDirectory(), fileName);
byte[] buffer = new byte[BUFFER_LEN];
FileOutputStream fos = new FileOutputStream(out);
int read = 0;

 while ((read = is.read(buffer, 0, BUFFER_LEN)) >= 0) {
        fos.write(buffer, 0, read);
  }

fos.flush();
fos.close()
is.close()

ファイルにWRITE_EXTERNAL_STORAGE許可を追加することを忘れないでくださいAndroidManifest.xml

于 2013-04-11T07:59:47.467 に答える
2
private void copyFileAssets() {
        AssetManager assetManager = getAssets();            
        InputStream in = null;
        OutputStream out = null;
        try {
          in = assetManager.open("ceo.jpg");
          out = new FileOutputStream(Environment.getExternalStorageDirectory()+File.separator+ "abc.jpg");
          copyFile(in, out);
          in.close();
          in = null;
          out.flush();
          out.close();
          out = null;
        } catch(IOException e) {
            Log.e("tag", "Failed to copy asset file: " + filename, e);
        }       

}

private void copyFile(InputStream in, OutputStream out) throws IOException {
    byte[] buffer = new byte[1024];
    int read;
    while((read = in.read(buffer)) != -1){
      out.write(buffer, 0, read);
    }
}

この許可を追加する必要があります:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
于 2013-04-11T08:39:05.937 に答える