[英]Create file with fixed size in Cocoa
我的MAC應用程序需要創建具有固定大小的文件。 示例:我要創建的文件名為:test.txt,固定大小:1069字節。 我怎樣才能做到這一點? 我用下面的代碼寫文件:
NSError *err;
NSString* arrayText = [writeArray componentsJoinedByString: @"\n"];
[filemgr createFileAtPath:[NSString stringWithFormat:@"%@/test.txt",sd_url] contents:nil attributes:nil];
[arrayText writeToFile:[NSString stringWithFormat:@"%@/test.txt",sd_url] atomically:YES encoding:NSUTF8StringEncoding error:&err];
謝謝
此功能將一些垃圾數據寫入文件。
+(BOOL)writeToFile:(NSString *)path withSize:(size_t)bytes;
{
FILE *file = fopen([path UTF8String], "wb");
if(file == NULL)
return NO;
void *data = malloc(bytes); // check for NULL!
if (data==NULL) {
return NO;
}
fwrite(data, 1, bytes, file);
fclose(file);
return YES;
}
如果您不想使用fwrite
+(BOOL)writeToFile:(NSString *)path withSize:(size_t)bytes;
{
void *data = malloc(bytes); // check for NULL!
if (data==NULL) {
return NO;
}
NSData *ldata = [NSData dataWithBytes:data length:bytes];
[ldata writeToFile:path atomically:NO];
return YES;
}
為了使文件包含一定數量的字節,必須將那么多字節寫入文件。 除了文件包含的字節數之外,沒有辦法使文件的大小有所變化。
您可以使用FSAllocateFork
(或fcntl
和F_PREALLOCATE
)來保留要寫入的空間。 例如,如果您要實現自己的下載邏輯(如果由於某種原因,NSURLDownload不夠好),並且想要(a)確保要下載的文件有足夠的空間,則可以使用此方法(b)先搶奪它。
但是,即使那實際上並沒有改變文件的大小,也只要確保(如果成功)寫操作不會因空間不足而失敗。
真正增長文件的唯一方法是寫入文件。
最好的方法是使用-[NSData writeToURL:options:error:]
(這是您一次准備好所有數據的簡便方法),或者使用NSFileHandle,這將使您可以分塊地寫入數據而不是必須先將其全部構建在內存中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.