您的位置:首页 > 其它

大文件复制时进行实时保存

2015-07-15 21:46 351 查看
int main(int argc, const char * argv[]) {
@autoreleasepool {

//复制文件

//找到原来的文件路径
NSString *soureFilePath = @"/Users/scjy/Downloads/51CTO下载-10大iOS开发者最喜爱的类库.doc";

//指定新的文件路径(文件不存在)
NSString *objectFilePath = @"/Users/scjy/Desktop/刘二龙练习/OC/练习1/大文件复制/大文件复制/51CTO下载-10大iOS开发者最喜爱的类库.doc";

//创建文件管理器,为创建新的文件做准备
NSFileManager *fileManager=[NSFileManager defaultManager];

// 如果源文件不存在,结束程序
if ([fileManager fileExistsAtPath:soureFilePath]) {
return 0;
}
/*        // 如果目标文件存在,无需创建
if ([fileManager fileExistsAtPath:objectFilePath]) {
NSLog(@"文件已存在,无需创建新文件");
}
*/
//创建新的文件(此时文件中无数据)
BOOL isSuccess=[fileManager createFileAtPath:objectFilePath contents:nil attributes:nil];
if (isSuccess)
{
NSLog(@"创建成功");

//1.读取源文件中的数据:fileHandleForReadingAtPath
NSFileHandle *soureHandle=[NSFileHandle fileHandleForReadingAtPath:soureFilePath];
// 用soureHandle.seekToEndOfFile获取文件字节数
for (NSUInteger i = 0; i<soureHandle.seekToEndOfFile; i++)
{
//准备读取源文件
NSFileHandle *soureHandle=[NSFileHandle fileHandleForReadingAtPath:soureFilePath];

// 定位从什么位置开始读取源文件
[soureHandle seekToFileOffset:10*i];

// 读取10字节
NSData *old_data=[soureHandle readDataOfLength:10];

//2.将源文件中获取的数据写入新的文件:fileHandleForWritingAtPath
//准备写入目标文件
NSFileHandle *objectHandle=[NSFileHandle fileHandleForWritingAtPath:objectFilePath];

// 开始写入时的位置
[objectHandle seekToFileOffset:10*i];

// 写入
[objectHandle writeData:old_data];

// 关闭源文件
[soureHandle closeFile];

// 关闭目标文件
[objectHandle closeFile];
}
}
else
{
NSLog(@"创建失败");
}

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: