文件的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];

}


發佈了51 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章