2011-12-27 10 views
0

ファイル/documents/recording.cafにファイルがあり、それをフォルダ/ documents /フォルダにコピーしたいとします。どうすればいい?次のコードを使用する場合は、ファイル名と拡張子をパスに含める必要があるように見えますが、これは必ずしもわかりません。別のディレクトリにファイルをコピーする

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *newPath = [documentsDirectory stringByAppendingPathComponent:@"/temporary/recording.caf"]; 

if ([fileManager fileExistsAtPath:newPath] == NO) { 

    [fileManager copyItemAtPath:file toPath:newPath error:&error]; 

    } 

} 

テーブルビューは、それがディレクトリで見つかったすべてのファイルで更新され、ユーザーがセルをタップすると、私はどこかにこのファイルをコピーします。

+0

のようなのNSStringのパス構築方法を使用して、それを構築たぶん私は、あなたの質問に完全に明確ではないんだけど、なぜあなたは、パスにファイル名と拡張子を知っている必要がありますと思いますか?このルーチンに渡されている元の 'file'からファイル名+拡張子を取り出し、NSStringの' lastPathComponent'メソッドを介して古いパスの代わりに新しいパスを挿入するだけです(ファイル名+拡張子を保持します)。 –

+0

ファイルをコピーするのではなく、ファイルを移動させないでください。本当にこのファイルの物理的なコピーが2つ必要ですか? –

+0

@KendallHelmstetterGelnerこれは、サーバーにファイルをアップロードするためのものです。ファイルに特定の名前(username_filename.fileextension)を付けたい。私は別の場所に名前を変更することができると確信していますが、PHPで何の経験もないので、これは私にとっては最も簡単です。ファイルは大きくなく、一時的なので、今のところ動作します。 –

答えて

3

追加パスコンポーネントは、文字列であるので、あなたは別のものを使用することができ、あなたが

NSString *anotherString=[NSString stringWithFormat:@"/temporary/%@",<yourfilenameAsString>]; 

を知っていて、ちょうどNEWPATHにそれを追加していないファイル名を持つ別の文字列を作成します。

@ "/ temporary/filename.extension"のようなパスを構築しないようにすることをお勧めします。むしろ、あなたが

- (NSString *)stringByAppendingPathComponent:(NSString *)aString 
- (NSString *)stringByAppendingPathExtension:(NSString *)ext 
+1

また、デバイスのルートディレクトリ( '/')には書き込まないでください。代わりに、ユーザーのドキュメントディレクトリに書き込む必要があります。 –

関連する問題