本文共 1921 字,大约阅读时间需要 6 分钟。
在Objective-C中实现二进制文件的拷贝,可以通过NSFileManager类来实现。以下是一个完整的示例代码,展示了如何高效地拷贝一个二进制文件。
#importvoid copyBinaryFile(NSString *sourcePath, NSString *destinationPath) { NSFileManager *fileManager = [NSFileManager defaultManager]; NSError *error = [fileManager errorForPath:sourcePath]; if (error) { NSLog(@"错误:文件路径错误,错误信息:%@", [error localizedDescription]); return; } NSError *destinationError = [fileManager createDirectoryAtPath:destinationPath withIntermediateDirectoriesCreateParentNode:YES error:&error]; if (destinationError) { NSLog(@"错误:无法创建目标目录,错误信息:%@", [error localizedDescription]); return; } NSFileHandle *srcFile = [fileManager fileHandleForReadingFileAtPath:sourcePath]; NSFileHandle *dstFile = [fileManager fileHandleForWritingFileAtPath:destinationPath]; if (!srcFile || !dstFile) { NSLog(@"错误:无法获取文件句柄,源文件或目标文件可能不存在"); return; } int byteCount = [srcFile seekToEndOfFile]; if (byteCount == 0) { NSLog(@"源文件为空,无法拷贝"); return; } // 开始拷贝文件内容 int bytesWritten = 0; while (bytesWritten < byteCount) { int bytesToWrite = min(byteCount - bytesWritten, 1024); const int32_t *buffer = [srcFile readBytesInRange:malloc(bytesToWrite)]; if (!buffer) { free(buffer); break; } if (dstFile.writeBufferFromBuffer(buffer, bytesToWrite) == nil) { free(buffer); break; } bytesWritten += bytesToWrite; free(buffer); } [srcFile close]; [dstFile close]; if (error) { NSLog(@"错误:拷贝过程中发生错误,错误信息:%@", [error localizedDescription]); } else { NSLog(@"成功:二进制文件已拷贝到目标路径"); }}
这个实现不仅简单易懂,而且能够高效处理二进制文件的拷贝任务。
转载地址:http://hmifk.baihongyu.com/