Tôi có một đường dẫn đến tập tin chứa trong một NSString. Có phương pháp nào để lấy kích thước tệp của nó không?Cách lấy kích thước tệp cho một đường dẫn?
Trả lời
Ghi nhớ rằng tệpAttributesAtPath: traverseLink: không còn được dùng như Mac OS X v10.5 nữa. Thay vào đó, hãy sử dụng attributesOfItemAtPath:error:
, được mô tả ở số same URL đề cập đến thesamet.
Với sự báo trước rằng tôi là một newbie Objective-C, và tôi bỏ qua các lỗi có thể xảy ra trong việc kêu gọi attributesOfItemAtPath:error:
, bạn có thể làm như sau:
NSString *yourPath = @"Whatever.txt";
NSFileManager *man = [NSFileManager defaultManager];
NSDictionary *attrs = [man attributesOfItemAtPath: yourPath error: NULL];
UInt32 result = [attrs fileSize];
này lót có thể giúp mọi người:
unsigned long long fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:someFilePath error:nil] fileSize];
Điều này trả về kích thước tệp theo byte.
CPU raises with attributesOfItemAtPath:error:
Bạn nên sử dụng stat.
#import <sys/stat.h>
struct stat stat1;
if(stat([inFilePath fileSystemRepresentation], &stat1)) {
// something is wrong
}
long long size = stat1.st_size;
printf("Size: %lld\n", stat1.st_size);
Bạn có nên sử dụng tệpSystemRepresentation thay vì UTF8String tại đây không? –
Bạn nói đúng. HFS + xác định phân tách Unicode chuẩn ("phân tích chuẩn") cho tên tệp. -UTF8String không đảm bảo trả lại thành phần phù hợp; -fileSystemRepresentation là. [1] (http://cocoadev.com/wiki/StringWithCString) –
@ParagBafna Tôi biết đây là một chủ đề cũ nhưng bạn có biết làm thế nào tôi có thể sử dụng cấu trúc 'stat' nhanh? –
Tiếp theo câu trả lời từ Oded Bến Dov, tôi thà sử dụng một đối tượng ở đây:
NSNumber * mySize = [NSNumber numberWithUnsignedLongLong:[[[NSFileManager defaultManager] attributesOfItemAtPath:someFilePath error:nil] fileSize]];
Trong trường hợp một số người ta cần một phiên bản Swift:
let attr: NSDictionary = try! NSFileManager.defaultManager().attributesOfItemAtPath(path)
print(attr.fileSize())
Swift 2.2:
do {
let attr: NSDictionary = try NSFileManager.defaultManager().attributesOfItemAtPath(path)
print(attr.fileSize())
} catch {
print(error)
}
Nó sẽ cung cấp Kích thước tệp bằng Byte. ..
uint64_t fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:_filePath error:nil] fileSize];
Nếu bạn muốn chỉ với kích thước tập tin byte chỉ cần sử dụng,
unsigned long long fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:yourAssetPath error:nil] fileSize];
NSByteCountFormatter chuỗi chuyển filesize (từ Bytes) với KB chính xác, MB, GB ... lợi nhuận của nó như 120 MB
hoặc 120 KB
NSError *error = nil;
NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath:yourAssetPath error:&error];
if (attrs) {
NSString *string = [NSByteCountFormatter stringFromByteCount:fileSize countStyle:NSByteCountFormatterCountStyleBinary];
NSLog(@"%@", string);
}
Swift4:
let attributes = try! FileManager.default.attributesOfItem(atPath: path)
let fileSize = attributes[.size] as! NSNumber
- 1. Cách lấy kích thước tệp
- 2. Cách lấy đường dẫn tệp từ URI?
- 3. Lấy tên tệp từ đường dẫn chuỗi?
- 4. Cách lấy kích thước mảng
- 5. Thay đổi kích thước đường dẫn trong canvas android
- 6. Cách lấy đường dẫn tệp từ std :: ifstream in C++
- 7. Vợt: Cách lấy đường dẫn của tệp đang chạy?
- 8. Cách lấy tên/đường dẫn tệp excel trong VBA
- 9. Cách lấy tệp trong đường dẫn tương đối trong C#
- 10. Cách lấy đường dẫn tuyệt đối của tệp bằng tkFileDialog?
- 11. Cách lấy đường dẫn tệp tuyệt đối bằng Python
- 12. Cách lấy đường dẫn tệp tuyệt đối từ đường dẫn cơ sở và đối tượng chứa ".."?
- 13. Lấy kích thước của một listview
- 14. nhận kích thước tệp trong javascript
- 15. Cách lấy kích thước của NSString
- 16. Lấy kích thước của một mảng 2D
- 17. Cách lấy Kích thước (KB) của UIImage
- 18. Cách lấy kích thước của một vùng trong JavaCV
- 19. cách lấy kích thước Heap của một chương trình
- 20. Cách lấy kích thước của một phạm vi trong Excel
- 21. Lấy kích thước của các kích thước trong mảng
- 22. Lấy kích thước của ZipInputStream
- 23. Cách tính kích thước tệp âm thanh?
- 24. Lấy đường dẫn thư mục của đường dẫn tệp tuyệt đối bằng Python
- 25. cách lấy Đường dẫn tuyệt đối cho tệp liên kết tượng trưng?
- 26. lấy kích thước tệp của một tệp để wget trước khi wget-ing nó?
- 27. lấy kích thước của nswindow
- 28. Cách lấy đường dẫn thư mục thực hiện trong java
- 29. Cách lấy đường dẫn tệp bằng cách sử dụng bộ mô tả tệp trên Android?
- 30. Cách lấy kích thước của một tệp trước khi tải lên?
Mã này rò rỉ Trình quản lý tệp được phân bổ. Tôi khuyên bạn chỉ cần sử dụng NSFileManager.defaultManager Singleton để tránh điều này. –