把dat文件(或其他文件)转化为txt文件的小工具

最近在处理实验数据的时候,发现采集到的data数据文件不能被读取,而且前面有一些系统信息,所以写了一个小工具把一个文件夹里的所有.dat文件转化为.txt文件,并且略去前面的几行。

//
//  main.m
//  dat2txtlime
//
//  Created by Adan on 16/9/20.
//  Copyright © 2016年 Adan. All rights reserved.
//

#import 

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *directory = [NSString stringWithUTF8String:"/Users/Adan/Desktop/r/data2"]; //母文件夹
        NSFileManager *manager = [NSFileManager defaultManager];
        NSArray *dirArray = [manager contentsOfDirectoryAtPath:directory error:nil]; //文件名数组
        
        char filename[256];
        int i = 1;
        for(NSString __strong *str in dirArray){
            if(str == [NSString stringWithUTF8String:".DS_Store"]){
                continue;
            }
          
            NSString *directory2 = [NSString stringWithUTF8String:"/Users/Adan/Desktop/r/data2/"];
            directory2 = [directory2 stringByAppendingString:str];
            //这里要把两个字符串接在一起,是因为dirArray里保存的是文件夹里的文件名,而不包括母文件夹的地址。
            str = [directory2 copy];
            
            FILE *fp = fopen([str UTF8String], "r");
            if (!fp) {
                NSLog(@"Can't find directory!");
                exit(0);
            }
            sprintf(filename, "/Users/Adan/Desktop/r/output/outdata_%03d.txt",i);
            i++;
            FILE *fpout = fopen(filename, "wb");
            
            char c;
            int j = 0;
            while ((c=fgetc(fp))!=EOF) {
                if (c == '\\r') {
                    j ++;
                }
                
                if (j > 17) { //17是忽略的行数
                    if (c == ','||c == '\\t'||c == ' ') { //这个条件语句是针对.csv文件,制表符文本文件,空格分割文本文件,忽略一切影响数据读取的字符
                        continue;
                    }
                    fprintf(fpout, "%c", c); 
                }
            }
        }
    }
    return 0;
}

你可能感兴趣的:(把dat文件(或其他文件)转化为txt文件的小工具)