有没有很好的例子来做文件读/写与块c与客观c?我是
Objective-c和iPhone API的新手,这里是我写的示例代码.有更好的方法吗?
-(void) performFileOperation { @try { NSFileHandle *inputFileHandle; NSFileHandle *outputFileHandle; //check whether the output file exist,if not create a new one. NSFileManager *morphedFileManager; outputFileManager = [NSFileManager defaultManager]; if ([outputFileManager fileExistsAtPath: self.outputFilePath ] == NO) { NSLog (@"Output file does not exist,creating a new one"); [outputFileManager createFileAtPath: self.outputFilePath contents: nil attributes: nil]; } NSData *inputDataBuffer; inputFileHandle = [NSFileHandle fileHandleForReadingAtPath: self.inputFilePath]; NSAssert( inputFileHandle != nil,@"Failed to open handle for input file" ); outputFileHandle = [NSFileHandle fileHandleForReadingAtPath: self.outputFilePath]; NSAssert( outputFileHandle != nil,@"Failed to open handle for output file" ); @try{ // seek to the start of the file [inputFileHandle seekToFileOffset: 0]; [outputFileHandle seekToFileOffset: 0]; while( (inputDataBuffer = [inputFileHandle readDataOfLength: 1024]) != nil ) { [outputFileHandle writeData: [self.fileWrapper process: inputDataBuffer]]; } } @catch (NSException *exception) { @throw; } @finally { [inputFileHandle closeFile]; [outputFileHandle closeFile]; } } @catch (NSException *exception) { @throw; } }
尝试写入时,我收到以下异常:
Failed to process input buffer ( *** -[NSConcreteFileHandle writeData:]: Bad file descriptor )
解决方法
需要更改outputFileHandle行:
outputFileHandle = [NSFileHandle fileHandleForWritingAtPath: self.outputFilePath];