我正在尝试将1,000个字节写入文件句柄并将其写入NSData(或NSMutableData)的实例。
我在这里做错了什么?
int offset = 1000;
NSFileHandle *fHandle;
NSMutableData *data;
fHandle = [NSFileHandle fileHandleForReadingAtPath:@"bigtextfile.txt"];
[fHandle seekToFileOffset:offset];
data = [NSMutableData data];
[fHandle writeData:data];
[fHandle closeFile];
[data length]; // this comes out to 0 bytes?
答案 0 :(得分:3)
我不确定您在寻求或想要在那里写一些东西后尝试读取数据? - 您正在打开文件进行阅读,然后您正在尝试写入空数据。
如果你想阅读,那么使用以下行或类似的API不写
data = [fHandle availableData];
如果你想写,然后打开文件进行写作 - 然后在NSData对象中有一些内容并将其写入文件。
答案 1 :(得分:1)
将其写入NSData的实例
这就是那里的基本问题。 NSFileHandle的-writeData:
方法不会将写入 NSData的实例。它将从数据对象写入文件。因此,您的代码会创建一个空数据对象,然后尝试将其写入只读文件句柄。它实际上并没有做任何会改变data
对象内容的事情。
从文件中读取数据,您要使用-readDataToEndOfFile
或-readDataOfLength:
。