Macos Swift2 OS X使用seekToFileOffset

Macos Swift2 OS X使用seekToFileOffset,macos,swift2,streaming,Macos,Swift2,Streaming,我正在打开一个“二进制”文件进行读取,如下所示(readD是我从流中读取Double的函数)。打开和读取都很好,但是因为数据结构很复杂,我需要在文件中跳转。但是,当使用“seekToFileOffset()”方法时,文件指针似乎没有改变,因此第二个readD为av检索了错误的值。我怀疑问题很简单,但我想不出来 func readResultsData(文件名:NSURL)->Bool{ let iStream = NSInputStream(URL: fileName) var fHandle

我正在打开一个“二进制”文件进行读取,如下所示(readD是我从流中读取Double的函数)。打开和读取都很好,但是因为数据结构很复杂,我需要在文件中跳转。但是,当使用“seekToFileOffset()”方法时,文件指针似乎没有改变,因此第二个readD为av检索了错误的值。我怀疑问题很简单,但我想不出来

func readResultsData(文件名:NSURL)->Bool{

let iStream = NSInputStream(URL: fileName)
var fHandle = NSFileHandle()

do {
  fHandle = try NSFileHandle(forReadingFromURL: fileName)
}
catch {
  return false
}

iStream!.open()

do {

  var av = try readD(iStream!)

  fHandle.seekToFileOffset(8)
  let offsetInFile = fHandle.offsetInFile
  Swift.print("File offset = \(offsetInFile)")

  av = try readD(iStream!)  // here, av is not read correctly
//等等

}
catch {
  iStream!.close()
  return false
}

iStream!.close()
return true
}

我是否需要以流以外的方式打开文件以允许文件中的随机访问?如果是这样的话,那么为什么这样做是正确的:

 var fHandle = NSFileHandle()
 let sizeOfFile = fHandle.seekToEndOfFile()
 Swift.print("File size = \(sizeOfFile)")

奇怪的是,文件上说只能读取部分或全部数据。它没有提到定位选项。@Johneleman我刚从苹果公司读到一份文件,上面说建议按顺序读取文件,所以要解决这个问题,我只需从一层提取信息,关闭并重新打开文件,提取下一层,依此类推,直到完成为止。我不知道这是否是最好的解决方案,但它确实有效。奇怪的是,文档中说只能读取部分或全部数据。它没有提到定位选项。@Johneleman我刚从苹果公司读到一份文件,上面说建议按顺序读取文件,所以要解决这个问题,我只需从一层提取信息,关闭并重新打开文件,提取下一层,依此类推,直到完成为止。我不知道这是否是最好的解决方案,但它是有效的。