[英]How to know a file is writing via NSFileManager
我有一個問題,如何知道該文件是否可訪問???
例如,文件正在寫入,但尚未完成。 我再次檢查文件,
我用
[[NSFileManager defaultManager] fileExistsAtPath:filePath];
它返回true ...但文件無法訪問。
如何確定文件准備好了?
謝謝
韋伯
編輯也許我沒有清楚地告訴我的問題。 我的意思是如果你開始傳輸視頻文件。 在運輸完成之前。 視頻文件無法訪問,但您仍然可以獲取傳輸文件的一部分。
使用GCD概念以異步方式寫入數據,一旦完成,將執行完成處理程序。(應檢測寫入過程的完成)
調度I / O便利API允許您對文件描述符執行異步讀寫操作。 此API支持基於流的語義,用於訪問文件描述符的內容。
方法:
void dispatch_write ( dispatch_fd_t fd, dispatch_data_t data, dispatch_queue_t queue, void (^handler)(dispatch_data_t data, int error) );
參考: https : //developer.apple.com/library/ios/documentation/Performance/Reference/GCD_libdispatch_Ref/index.html#//apple_ref/c/func/dispatch_write
基本上你需要檢查文件的屬性,特別是NSFileBusy
屬性:
if ([fileManager fileExistsAtPath:filePath]) {
NSDictionary *attributes = [fileManager attributesOfItemAtPath:filePath error:nil];
NSLog(@"File Busy %@", [attributes objectForKey:NSFileBusy]);
}
NSFileCoordinator和NSFilePresenter就是為此而創建的。 您可以從wwdc中找到有趣的高級iCloud文檔存儲視頻,其中包含此類的用法。 構建基於文檔的應用程序也很棒。
嘗試使用以下代碼獲取文件數據:
NSURL *url = [NSURL fileURLWithPath:filePath];
NSData *readData = [NSData dataWithContentsOfURL:url];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.