[英]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.