(NS)StreamDelegate - 写入关闭时没有错误
(NS)StreamDelegate - no error when writing to closed
当使用 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)
还有..什么都没有。没有写入文本,但没有报告错误。
写入已关闭的流不会触发错误吗?也就是我们是否应该在写入之前检查流状态?
您应该始终检查 write()
中的 return 值,这是写入流的字节数,或者 -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
。
当使用 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)
还有..什么都没有。没有写入文本,但没有报告错误。
写入已关闭的流不会触发错误吗?也就是我们是否应该在写入之前检查流状态?
您应该始终检查 write()
中的 return 值,这是写入流的字节数,或者 -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
。