2017-04-23 80 views
0

我试图从Swift项目中作为资产包含的文件读取4个字节。在下面的代码流是一个InputStream,其作为创建:IOS InputStream.read返回-1但streamError为零

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

注意,你可以叫'让道= Bundle.main.path(forResource:文件名,ofType:无)'无需分割文件名称。 –

回答

2

您必须open() 之前,你可以阅读或写一个流:

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

谢谢你拯救我的一天。 –