IOS InputStream.read返回-1但streamError为nil

时间:2017-04-23 08:54:43

标签: ios swift

我试图从Swift项目中作为资产包含的文件中读取4个字节。下面代码中的流是一个InputStream,创建为:

let part = fileName.components(separatedBy: ".")
let path = Bundle.main.path(forResource: part[0], ofType: part[1])
let stream = InputStream.init(fileAtPath: path!)

但是,由于某种原因,InputStream.read返回-1。该文档指出,当返回-1时,更多信息将出现在streamError字段中,但是调试器将此字段显示为nil。

var val = [UInt8](repeating: 0, count: 4)
let bytesRead = stream.read(&val, maxLength: 4)
let err = stream.streamError
let desc = err.debugDescription

该文件长度为100kb,因此它不应该在流的末尾。

1 个答案:

答案 0 :(得分:2)

你必须open() 在您可以读取或写入之前的流:

let stream = InputStream(fileAtPath: path!)
stream.open()