質問: Androidで内部ストレージにあるフォルダのコピーを行う方法を教えてください。 例えば */sdcard/Download* にある test というフォルダを */sdcard/* までコピーするというようなものです。
回答: 「内部ストレージ」であれば基本となる処理は「Javaでの再帰呼び出しによるフォルダのコピー」と同様で問題ありません。これについてはネット上を探せば簡単に見つかるので割愛します。ただし、たまに抜けているので補足しておくと、循環参照にならないようにパスのチェックが必要です。そうしないと循環コピー(コピーが無限ループ)が発生しかねません。 Android上でのコピーでは、上記の再帰処理時、更にファイルに対してメディアスキャンを行う必要があります。これを行わないと、例えばコピー先フォルダ内の画像ファイルや音楽ファイルなどが、端末が再起動されるまで他のアプリに認識されなくなったりします。Androidでは各種ファイルのパス等を種類ごとにデータベースで保持しており、アプリからこれを読み込んで使用するためこのような現象が起きます。スキャンはMediaScannerConnection.scanFileで行うのが一番簡単なので、これをおすすめします。