1

使用 写入文件时OutputStream,在该流关闭后,没有错误,它默默地写入失败。

开始:

self.outputStream = OutputStream(toFileAtPath: filePath, append: true)

self.outputStream.delegate = self
self.outputStream.schedule(in: RunLoop.current, forMode: RunLoopMode.defaultRunLoopMode)
self.open()

代表正在工作:
func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
//Will report that stream was opened.

...写一些文字-成功...

self.outputStream.close()
self.outputStream.write(newData, maxLength: newData.count)

没别的了。没有写入文本,但没有报告错误。
写入关闭的流不会触发错误吗?也就是说,我们应该在写入之前检查流状态吗?

4

1 回答 1

2

您应该始终检查 from 的返回值write(),这是写入流的字节数,或者-1出现错误:

self.outputStream.close()
let bytesWritten = self.outputStream.write(newData, maxLength: newData.count)
if bytesWritten < 0 {
    print("failed:", outputStream.streamError?.localizedDescription ?? "Unknown error")
}

关闭后写入输出流错误的,将通过该检查检测到。

streamError在发生错误的情况下,流可以提供额外的信息,但它是nil在这种特殊情况下。

于 2018-04-19T08:43:10.797 回答