我想将一些数据写入文本文件,但是由于“ bytesWritten”的值为-1,所以我总是会收到“错误”的消息。我已经调试了dataLength和dataBytes都可以,并且我想我有权在桌面上创建文件。是什么原因导致此问题,我该如何解决?代码如下:
void savedata(NSData *data)
{
NSInteger dataLength;
const uint8_t * dataBytes;
NSInteger bytesWritten;
NSInteger bytesWrittenSoFar;
dataLength = [data length];
dataBytes = [data bytes];
NSOutputStream *fileStream = [NSOutputStream outputStreamToFileAtPath:@"~/Desktop/12.txt" append:NO];
bytesWrittenSoFar = 0;
do {
bytesWritten = [fileStream write:&dataBytes[bytesWrittenSoFar] maxLength:dataLength - bytesWrittenSoFar];
assert(bytesWritten != 0);
if (bytesWritten == -1) {
NSLog(@"Wrong!");
break;
} else {
bytesWrittenSoFar += bytesWritten;
}
} while (bytesWrittenSoFar != dataLength);
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSData* data = [@"sadas" dataUsingEncoding:NSUTF8StringEncoding];
savedata(data);
return 0;
}
}
最佳答案
写入流之前,必须在流上调用-open
。如果您阅读the documentation,则有一点注意:
讨论区
必须先打开流,然后才能使用它。
将来,如果出现问题,也可以通过查询-streamStatus
和-streamError
方法来获取更多信息。
关于iphone - 当我想使用outputStream创建文件时,我总是得到-1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10427805/