私の現在のプロジェクトでは、ファイルがまだコピーされているかどうかを確認する必要がありました。
特定のフォルダーの file_added 、 file_removed 、 file_modified 、 file_renamed などの OS 通知と、対応するファイル パスを提供するライブラリを既に開発しています。
ここでの問題は、1 GB のファイルを追加すると、ファイルがコピーされているときに file_added 、 file_modified、file_modified などの複数の通知が表示されることです。
ファイルがコピーされているかどうかを確認することで、これらの通知を超えることにしました。それに基づいて、イベントを無視します。
ファイルパスを入力パラメーターとして受け取るファイルがコピーされているかどうかを示すコードを以下に記述しました。詳細: - Mac では、ファイルのコピー中に作成日が 1970 年より前の日付に設定されます。コピーされると、日付は現在の日付に設定されます。このテクニックを使っています。これに基づいて、ファイルがコピーされていると判断しています。
問題:- ターミナルでファイルをコピーすると失敗します。アプローチ方法を教えてください。
bool isBeingCopied(const boost::filesystem::path &filePath)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
bool isBeingCopied = false;
if([[[[NSFileManager defaultManager] attributesOfItemAtPath:[NSString stringWithUTF8String:filePath.string().c_str()] error:nil] fileCreationDate] timeIntervalSince1970] < 0)
{
isBeingCopied = true;
}
[pool release];
return isBeingCopied;
}