Tag: nsfilehandle

我如何在我的NSFIleHandle处理中捕获EPIPE?

我在我的iOS应用程序中遇到了EPIPE问题,并没有被@ try / @ catch / @ finally块捕获。 我怎么能捕捉到这个信号(SIGPIPE,可能)… 我已经在我的应用程序中构build了一个“Web代理”,它将处理某些types的URL – 在这种错误情况下,似乎远程端(也在我的应用程序中,但隐藏在iOS库中)closures了套接字的末尾。 我没有收到通知(我应该吗?有什么我应该注册的NSFileHandle可能有帮助吗?)。 我已经把这个代理放在了Matt Gallagher所提供的HTTPServer上(可以在这里find ),问题在于他放在一起的HTTPRequestHandler类的子类。 这是代码(这个代码和基类中的startResponse方法是等价的): -(void)proxyTS:(SSProxyTSResource *)proxyTS didReceiveResource:(NSData *)resource { NSLog(@"[%@ %@]", NSStringFromClass([self class]), NSStringFromSelector(_cmd)); CFHTTPMessageRef response = CFHTTPMessageCreateResponse(kCFAllocatorDefault, 200, NULL, kCFHTTPVersion1_1); CFHTTPMessageSetHeaderFieldValue(response, (CFStringRef)@"Content-Type", (__bridge CFStringRef)s_MIMEtype); CFHTTPMessageSetHeaderFieldValue(response, (CFStringRef)@"Connection", (CFStringRef)@"close"); CFHTTPMessageSetBody(response, (__bridge CFDataRef)resource); CFDataRef headerData = CFHTTPMessageCopySerializedMessage(response); @try { NSLog(@" -> writing %u bytes […]

使用NSFileHandle覆盖数据

使用NSFileHandle,使用truncateFileAtOffset从文件末尾删除n个字符非常容易。 -(void)removeCharacters:(int)numberOfCharacters fromEndOfFile:(NSFileHandle*)fileHandle { unsigned long long fileLength = [fileHandle seekToEndOfFile]; [fileHandle truncateFileAtOffset:fileLength – numberOfCharacters]; } 但是,如果不将所有剩余的数据复制到内存中,覆盖该文件,然后将剩余的数据写回到文件中,则从文件的前面删除字符似乎是不可能的。 -(void)removeCharacters:(int)numberOfCharacters fromBeginningOfFile:(NSFileHandle*)fileHandle { [fileHandle seekToFileOffset:numberOfCharacters]; NSData *remainingData = [fileHandle readDataToEndOfFile]; [fileHandle truncateFileAtOffset:0]; [fileHandle writeData:remainingData]; } 此代码有效,但将成为大文件的责任。 我错过了什么? 理想情况下,我想能够做replaceCharactersInRange:withData:

NSFileHandle writeData:exception处理

这可能是一个相当广泛的问题,但我找不到任何在线资源解决或解释此事。 问题是在创buildNSFileHandle *writer = [NSFileHandle fileHandleForWritingAtPath:"path"] ,当你使用[writer writedata:"NSData"] ,根据苹果文档可能会触发正弦可能的exception。 “如果文件描述符closures或无效,接收方表示未连接的pipe道或套接字端点,文件系统上没有剩余空间,或发生其他写入错误,则此方法会引发exception。 – 苹果DOC 我想知道的是,有什么办法可以处理或validation这些问题,而不必在写入之前使用任何try catch或检查条件检查中的每个错误。 任何可能的方式,我们可以使用NSError来处理这个?

如何正确处理Swift 2.0中的NSFileHandleexception?

首先,我是iOS和Swift的新手,来自Android / Java编程的背景。 所以对于我来说,从写入文件的尝试中捕获exception的想法是第二性质,在缺less空间,文件权限问题或任何其他可能发生的文件(并已发生,根据我的经验) 。 我也明白,在Swift中,exception是不同于Android / Java的,所以这不是我在这里问的。 我试图追加到使用NSFileHandle的文件,如下所示: let fileHandle: NSFileHandle? = NSFileHandle(forUpdatingAtPath: filename) if fileHandle == nil { //print message showing failure } else { let fileString = "print me to file" let data = fileString.dataUsingEncoding(NSUTF8StringEncoding) fileHandle?.seekToEndOfFile() fileHandle?.writeData(data!) } 然而, seekToEndOfFile()和writeData()函数都表明它们抛出某种exception: 如果文件描述符closures或无效,接收方表示未连接的pipe道或套接字端点,文件系统上没有剩余空间,或者发生其他写入错误,则此方法引发exception。 – writeData() Apple文档 那么在Swift 2.0中处理这个问题的正确方法是什么呢? 我已经阅读了Swift-Language中的error handling,Swift中的 try-catchexception , NSFileHandle writeData:exception处理 […]