文件的copy与合并

- (IBAction)copyFile

{

    //source file :  source.txt ==> source copy.txt

    NSString *documentsPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

    NSString *sourceFilePath = [documentsPath stringByAppendingPathComponent:@"source.txt"];

    NSLog(@"source:%@", sourceFilePath);

    NSString *fileExtension = [sourceFilePath pathExtension];

    NSString *fileName = [sourceFilePath stringByDeletingPathExtension];

    // xxxx.txt   xxxx copy.txt

    NSString *targetFilePath = [[fileName stringByAppendingString:@" copy"]stringByAppendingPathExtension:fileExtension];

    NSLog(@"targetFilePath:%@", targetFilePath);

    

    //handle

    NSFileHandle *sourceFileHandle = [NSFileHandle fileHandleForReadingAtPath:sourceFilePath];

    

    [[NSFileManager defaultManager]createFileAtPath:targetFilePath contents:nil attributes:nil];

    //handle

    NSFileHandle *targetFileHandle = [NSFileHandle fileHandleForWritingAtPath:targetFilePath];

    

    //拷贝数据

#define MAX_SIZE 10

    unsigned long long size = [sourceFileHandle seekToEndOfFile];//35

    [sourceFileHandle seekToFileOffset:0];

    unsigned long long offset = 0;

    NSData *data = nil;

    while(offset <= size){

        data = [sourceFileHandle readDataOfLength:MAX_SIZE];

        [targetFileHandle writeData:data];

        offset += MAX_SIZE;

    }


    [sourceFileHandle closeFile];

    [targetFileHandle closeFile];

    

}

- (IBAction)combine

{

    NSString *documentsPath = [NSHomeDirectory()stringByAppendingPathComponent:@"Documents"];

    //获取到Documents下的所有文件

    NSArray *files = [[NSFileManager defaultManager]contentsOfDirectoryAtPath:documentsPath error:nil];

    //过滤非txt文件

    NSMutableArray *txtfiles = [[NSMutableArray alloc]init];

    for (NSString *file in files) {

        if([[file pathExtension] isEqualToString:@"txt"]){

            [txtfiles addObject:file];

        }

    }

    //创建合并文件

    NSString *combineFilePath = [documentsPath stringByAppendingPathComponent:@"combine.txt"];

    [[NSFileManager defaultManager]createFileAtPath:combineFilePath contents:nil attributes:nil];

    //创建handle

    NSFileHandle *writingHandle = [NSFileHandle fileHandleForWritingAtPath:combineFilePath];

    //拷贝多件内容到合并文件

    for (NSString *fileName in txtfiles)

    {

        NSString *filePath = [documentsPath stringByAppendingPathComponent:fileName];

        NSFileHandle *readingHandle = [NSFileHandle fileHandleForReadingAtPath:filePath];

        NSData *data = [readingHandle readDataToEndOfFile];

        [readingHandle closeFile];

        [writingHandle writeData:data];

    }

    

    [writingHandle closeFile];

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值