Objective c 使用NSFileHandle读取/写入文件的示例
有没有很好的例子可以用objective c在块中进行文件读/写?我不熟悉objective-c和iPhone API,下面是我编写的示例代码。有更好的方法吗Objective c 使用NSFileHandle读取/写入文件的示例,objective-c,file-io,filereader,filewriter,Objective C,File Io,Filereader,Filewriter,有没有很好的例子可以用objective c在块中进行文件读/写?我不熟悉objective-c和iPhone API,下面是我编写的示例代码。有更好的方法吗 -(void) performFileOperation { @try { NSFileHandle *inputFileHandle; NSFileHandle *outputFileHandle; //check whether the output file exist,
-(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];
这行吗?乍一看似乎很好。也许您可以将缓冲区大小增加到65kB或其他任何大小。看起来我使用的是fileHandleForReadingAtPath而不是fileHandleForWritingAtPath。