フォルダの上書き

昨日書き忘れてたんだけど、展開痔に同名のフォルダがあった場合の処理について。Windows(のエクスプローラ)とMac OS X(のFinder)におけるフォルダの上書きはかなり挙動が違います。試してみれば分かるけど、Windowsは移動先のフォルダ内にあるファイルと同名のファイルが移動前のフォルダ内にあれば、それを上書きして、そうでなければ、移動になります。一方Mac OS Xは移動先のフォルダを削除して、移動前のフォルダで置き換えるので、Windowsである「差分データを上書き」というのはフォルダ単位では難しいです。
実装するのが簡単なのはもちろんMac OS X風のやりかたなのですが、実際に使用することを考えると、Windows風のやり方の方がよさそうな気がします。NSFileManagerのsubpathsAtPathを使って、指定フォルダ下の全てのファイル(サブディレクトリ内のファイルを含む)のパスが取得するよりも、directoryContentsAtPathを使って、指定フォルダ内の階層のみを調べ、ファイルであれば問答無用で展開先に上書きし、フォルダであればフォルダがない場合のみ展開先に移動する。
フォルダが展開先にあれば、フォルダの配列(最初は作業ディレクトリのみが追加されている)に追加して、上の動作を再度行なえば再起を使わなくてすみそうです。