-2
什麼是讀取文本文件並將其複製到變量(CFStringRef)中最簡單,最直接的方法?在Apple開發中閱讀Core Foundation的文本文件?
什麼是讀取文本文件並將其複製到變量(CFStringRef)中最簡單,最直接的方法?在Apple開發中閱讀Core Foundation的文本文件?
如果你只是想結束一個CFStringRef變量而不介意使用Foundation,那麼最簡單的事情就是使用NSString的初始化工具之一從文件系統中讀取並將其從ARC中移出:
NSString * string = [NSString stringWithContentsOfFile:@"/path/to/file" encoding:NSUTF8StringEncoding error:nil];
CFStringRef cfstring = CFBridgingRetain(string);
當然,如果你想有一個純CF解決方案,那麼我建議是這樣的:
FILE * file;
size_t filesize;
unsigned char * buffer;
// Open the file
file = fopen("/path/to/file", "r");
// Seek to the end to find the length
fseek(file, 0, SEEK_END);
filesize = ftell(file);
// Allocate sufficient memory to hold the file
buffer = calloc(filesize, sizeof(char));
// Seek back to beggining of the file and read into the buffer
fseek(file, 0, SEEK_SET);
fread(buffer, sizeof(char), filesize, file);
// Close the file
fclose(file);
// Initialize your CFString
CFStringRef string = CFStringCreateWithBytes(kCFAllocatorDefault, buffer, filesize, kCFStringEncodingUTF8, YES);
// Release the buffer memory
free(buffer);
在這種情況下,你需要使用標準C庫函數來獲取文件的字節的緩衝區內容。如果你處理的文件太大而無法加載到內存緩衝區,那麼你可以很容易地使用mmap函數來存儲文件,這是NSData在很多情況下所做的。
我結束了使用C I/O庫。我想知道是否有隻使用CF庫的解決方案。 –