在使用目标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 )
答案 0 :(得分:3)
需要更改outputFileHandle
行:
outputFileHandle = [NSFileHandle fileHandleForWritingAtPath: self.outputFilePath];