簡體   English   中英

可可NSFileManager錯誤的文件大小

[英]cocoa NSFileManager wrong file size

我正在使用NSFileManager來獲取應用程序中某些文件的大小。

每個文件都由單獨的線程檢查,並且所有文件的結果都是相同的錯誤值。 在單獨的線程中為每個文件運行以下代碼:

NSFileManager *fileManager= [[NSFileManager alloc] init];
NSUInteger completedFileSize = [[[fileManager attributesOfItemAtPath:fileName error:&error] objectForKey:NSFileSize] unsignedLongValue];
NSLog(@"Part %lu: %@ => size:%lu actual size:%lu", myPart.SequenceNumber, fileName, completedFileSize, myPart.Size);

輸出為:

第1部分:/ Users / David / TEMP / 245E0BF53ECA / part1 =>尺寸:36864實際尺寸:37187

第5部分:/ Users / David / TEMP / 245E0BF53ECA / part5 => size:36864實際大小:37187

第2部分:/ Users / David / TEMP / 245E0BF53ECA / part2 =>尺寸:36864實際尺寸:37187

第4部分:/ Users / David / TEMP / 245E0BF53ECA / part4 => size:36864實際大小:37187

第3部分:/ Users / David / TEMP / 245E0BF53ECA / part3 =>尺寸:36864實際尺寸:37187

第6部分:/ Users / David / TEMP / 245E0BF53ECA / part6 => size:36864實際大小:37187

第7部分:/ Users / David / TEMP / 245E0BF53ECA / part7 => size:36864實際大小:37186

第0部分:/ Users / David / TEMP / 245E0BF53ECA / part0 =>尺寸:36864實際尺寸:37189

終端上ls -l命令的輸出也與先前保存在myPart.Size中的正確文件大小相同。

-rw-r--r-- 1 David員工37189 Nov 25 11:25 part0

-rw-r--r-- 1 David staff 37187 Nov 25 11:25 part1

-rw-r--r-- 1 David staff 37187 Nov 25 11:25 part2

-rw-r--r-- 1 David staff 37187 Nov 25 11:25 part3

-rw-r--r-- 1 David員工37187 Nov 25 11:25 part4

-rw-r--r-- 1 David員工37187 Nov 25 11:25 part5

-rw-r--r-- 1 David staff 37187 Nov 25 11:25 part6

-rw-r--r-- 1 David員工37186​​ Nov 25 11:25 part7

我正在使用OS X 10.8和Xcode 4.5。

任何幫助將不勝感激。

我發現了實際的問題!

在以下情況下文件未關閉:

[[[fileManager attributesOfItemAtPath:fileName error:&error] objectForKey:NSFileSize] unsignedLongValue];

所以我關閉了與fileName變量關聯的文件處理程序的路徑 ,問題得以解決。

fclose(myFile); //this is the handler for fileName
//now the value returned from the below line is correct.
[[[fileManager attributesOfItemAtPath:fileName error:&error] objectForKey:NSFileSize] unsignedLongValue];

謝謝大家

我認為您應該使用defaultManager和fileSize來計算文件大小。

unsigned long long fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:someFilePath error:nil] fileSize];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM