使用objective-c中的文件偏移量

时间:2011-06-14 15:59:57

标签: objective-c ios nsdata

我正在尝试将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?

2 个答案:

答案 0 :(得分:3)

我不确定您在寻求或想要在那里写一些东西后尝试读取数据? - 您正在打开文件进行阅读,然后您正在尝试写入空数据。

如果你想阅读,那么使用以下行或类似的API不写

data = [fHandle availableData];

如果你想写,然后打开文件进行写作 - 然后在NSData对象中有一些内容并将其写入文件。

答案 1 :(得分:1)

  

将其写入NSData的实例

这就是那里的基本问题。 NSFileHandle的-writeData:方法不会将写入 NSData的实例。它将数据对象写入文件。因此,您的代码会创建一个空数据对象,然后尝试将其写入只读文件句柄。它实际上并没有做任何会改变data对象内容的事情。

文件中读取数据,您要使用-readDataToEndOfFile-readDataOfLength: