举个例子,我想写一些字符串值str,到一个文件,"yy",因为它通过一个循环的每次迭代变化.以下是我目前正在实施的方式:
NSOutputStream *oStream = [[NSOutputStream alloc] initToFileAtPath:@"yy" append:NO];
[oStream open];
while ( ... )
{
NSString *str = /* has already been set up */
NSData *strData = [str dataUsingEncoding:NSUTF8StringEncoding];
[oStream write:r(uint8_t *)[strData bytes] maxLength:[strData length]];
...
}
[oStream close];
Run Code Online (Sandbox Code Playgroud)
忽略我需要的UTF-8编码,这NSString通常是如何写入文件的?也就是说,首先转换为一个NSData对象,然后使用bytes并将结果转换uint8_t为NSOutputStream's write?
是否有更频繁使用的替代品?
编辑:NSString需要将多个s附加到同一个文件,因此上面的循环.
Rob*_*ier 13
ctshryock的解决方案与你的解决方案略有不同,因为你随时都要追加,并且ctshyrock会同时写一个文件(覆盖以前的版本).对于长期运行的过程,这些过程将完全不同.
如果你想要随时写作,我通常会NSFileHandle在这里而不是NSOutputStream.在我看来,它更容易使用.
NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:aPath];
while ( ... )
{
NSString *str = /* has already been set up */
[fileHandle writeData:[str dataUsingEncoding:NSUTF8StringEncoding]];
}
[fileHandle closeFile];
Run Code Online (Sandbox Code Playgroud)
请注意,fileHandle当它被解除分配时会自动关闭,但我喜欢在我完成它之后继续显式关闭它.
| 归档时间: |
|
| 查看次数: |
8344 次 |
| 最近记录: |