0

MacOS でファイルのバイトごとのコピーを行っています。そのため、ファイルに関するすべてのファイル ヘッダー データ (つまり、LastModified、CreateDate など) が失われています。

copyItemAtURL を使用したくないのは、特にコピーのキャンセル、進行状況の更新、一時停止などを許可するために必要なきめ細かい制御が得られないためです。しかし、copyItemAtURL がファイルに対して行うことを模倣したいヘッダー データ - それが何であるか正確にはわかりません。

ソース ファイルから NSURLContentModificationDateKey、NSURLCreationDateKey を取得し、それを宛先ファイルに適用して、基本をカバーする方法を知っています。

私の質問は、元のファイルから新しいファイルに転送されることを保証する必要がある他に何ですか? ラベル?セキュリティ情報?

アドバイスをいただければ幸いです。

編集

Apple docs hereでメタデータに関する一般的なガイダンスを見つけましたが、どの条件でどのメタデータを入力する必要があるかについては実際には言及していません。

4

1 に答える 1

2

これは、古い Carbon ベースのファイル マネージャーのFSCopyObjectAsync API でサポートされていましたが、残念ながら OS X 10.8 (別名 Mountain Lion) で廃止されました。

FSCopyObjectAsync のドキュメントでは、読者にcopyItemAtURL:toURL:errorまたは POSIX copyfile関数のいずれかを指示しています。後者は、探しているコントロールを提供しているようです。

注: 私は copyfile(); について個人的によく知っているわけではありません。YMMV。

一般的に言えば、ファイルをコピーするために特別に提供されている上位レベルの API を採用する方が、下位レベルのプリミティブを使用して独自に作成するよりも優れています。記述しなければならないコードの量が大幅に削減されるだけではありません。また、将来の OS リリースでファイル システムに追加されるものはすべて自動的にサポートされるため、アプリケーションの将来性も保証されます。

完全を期すために、 FSCopyObjectAsync を使用してfile-copy-with-progress-indicatorを実行する方法を説明する記事 (廃止前に書かれています)を次に示します。

于 2013-03-23T03:03:59.810 に答える