2012-02-02 4 views
17

リモートURLからダウンロードしたファイルを含むサブディレクトリを割り当てる「temp」というiOSドキュメントフォルダを使用しています。今、 "temp"ディレクトリとそのすべての内容を "main"フォルダにコピーする必要があります(以前に作成された既存のものを上書きします)。私はファイルを扱う方法を知っていますが、ディレクトリ全体をコピーする方法はありますか?あなたサブディレクトリを含むiOSコピーディレクトリ

答えて

30

また、あなたが知っているディレクトリと同じようにNSFileManagerの方法を使用することができます。例:

if ([[NSFileManager defaultManager] fileExistsAtPath:pathToTempDirectoryInMain]) { 
    [[NSFileManager defaultManager] removeItemAtPath:pathToTempDirectoryInMain error:nil]; 
} 
NSError *copyError = nil; 
if (![[NSFileManager defaultManager] copyItemAtPath:pathToTempDirectory toPath:pathToTempDirectoryInMain error:&copyError]) { 
    NSLog(@"Error copying files: %@", [copyError localizedDescription]); 
} 
+0

素晴らしい、ありがとう! – Jaume

+0

ところで、これは容易ではないので、これを実行するプロセスに対してユーザー権限が必要です。 – Volomike

5

NSFileManager方法removeItemAtPath:error:removeItemAtURL:error:copyItemAtPath:toPath:error:ありがとう、そしてcopyItemAtURL:toURL:error:方法は、ディレクトリを処理します。

moveItemAtPath:toPath:error:moveItemAtURL:toURL:error:をご覧ください。

+0

ファイルマネージャのcopyItemAtPathメソッドを使用しました。はい、ファイルをコピーしましたが、そのレベルのすべてのディレクトリを残しました。私はすべてをdir構造体にコピーしたい。すべてのポインタ? – Alix

+0

@Alix 'copyItemAtPath'または' moveItemAtPath'を実行するかどうかは、指定したパス名でディレクトリが存在しない場合に作成します。したがって、/ tmp/srcを作成して/ tmp/destにコピーしたい場合、または/ tmp/destに移動したい場合、jrtc27のソリューションを実行すると、それ以前の/ tmp/destが自動的に削除され、/tmp/dest。別の例として、/ tmp/Alixと/ home/alix/Documentsのようなフォルダがあり、そこでAlixフォルダを入れたいとしましょう。ファイン - 私はちょうどソースを/ tmp/Alixとdestに設定しました。/home/alix/Documents/Alixへ。自動的にAlixフォルダが作成されます。 – Volomike

関連する問題