IOS 学习笔记 2015-04-03 OC-API-文件读写

//
//  WPFileHelper.m
//  OC-API-文件操作
//
//  Created by wangtouwang on 15/4/3.
//  Copyright (c) 2015年 wangtouwang. All rights reserved.
//

#import "WPFileHelper.h"

@implementation WPFileHelper

+(NSString *)getFileToString:(int)tag{
    NSString *result ;
    //目标 读取字符型文件 例如后缀.txt
    if (tag==0) {
        //方法1 使用 NSString
        NSError *error;
        NSString *filePath =@"/Users/wangtouwang/Desktop/OC-控件.txt";
        result = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
        if (error) {
            NSLog(@"read error ,the error is %@",error);
        }else{
            NSLog(@"read success,the file content is %@",result);
        }
    }else if (tag==1){
        //方法2 使用  NSFileManager
        NSString *filePath =@"/Users/wangtouwang/Desktop/OC-控件.txt";
        NSFileManager *manager=[NSFileManager defaultManager];
        NSData *data = [manager contentsAtPath:filePath];
        result=  [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        //NSLog(@"%@",result);
    }else if (tag==2){
        //方法3  NSFileHandle
        NSString *filePath =@"/Users/wangtouwang/Desktop/OC-控件.txt";
        NSFileHandle *handler = [NSFileHandle fileHandleForReadingAtPath:filePath];
        NSData *data = [handler readDataToEndOfFile];
        result=  [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        [handler closeFile];
        //NSLog(@"%@",result);
    }else if(tag==3){
        //方法4  NSData
        NSString *filePath =@"/Users/wangtouwang/Desktop/OC-控件.txt";
        //NSDataReadingMappedIfSafe参数。使用这个参数后,iOS就不会把整个文件全部读取的内存了,而是将文件映射到进程的地址空间中,
        //这么做并不会占用实际内存。这样就可以解决内存满的问题。
        NSData *data= [NSData dataWithContentsOfFile:filePath options:nil error:nil];
        result =[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
       // NSLog(@"%@",result);
    }
    return result;
}


+(NSData *) getFileToData:(int)tag{
    NSData *result = nil;
    //目标 读取二进制文件 例如 图片
    NSString *imagePath = @"/Users/wangtouwang/Desktop/TEMP/51sPBOtpQ0L._SL500_AA300_.jpg";
    if (tag==0) {
        // 方法1 NSData
        result = [NSData dataWithContentsOfFile:imagePath];
       // NSInteger len = result.length;
        //NSLog(@"长度 = %lu",len);
    }else if (tag == 1){
        //方法2 NSFileHandle
        NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:imagePath];
       result =[handle readDataToEndOfFile];
        [handle closeFile];
        //方法3 NSFileManager
    }else if(tag==2){
        NSFileManager *manger = [NSFileManager defaultManager];
       result = [manger contentsAtPath:imagePath];
    }
    return result;
}

+(void)writerFileByString:(NSString *)str{
    NSString  *content = str;
    NSString *filePath =@"/Users/wangtouwang/Desktop/新文件.txt";
    // 写入字符型文件 例如后缀.txt 假如文件不存在依然成功
    int tag =3;
    if (tag==0) {
        //方法1 NSString
        [content writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
    }else if (tag==1){
        //方法2  NSFileHandle 假如文件不存在会失败
        NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding];
        NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:filePath];
        [handle writeData:data];
        [handle closeFile];
    }else if(tag==2){
        //方法3 NSFileManager 假如文件不存在依然成功
        NSFileManager *manager = [NSFileManager defaultManager];
        BOOL flag = [manager createFileAtPath:filePath contents:[content dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
        if (flag) {
            NSLog(@"写入成功");
        }
    }else if (tag==3){
        //方法4  NSMutableData 假如文件不存在依然成功
        NSMutableData *writer = [[NSMutableData alloc] init];
        [writer appendData:[content dataUsingEncoding:NSUTF8StringEncoding]];
        [writer writeToFile:filePath atomically:YES];
    }
}

+(void)writerFileByData:(NSData *)data{
    //写入二进制文件 例如图片
    NSString *filePath =@"/Users/wangtouwang/Desktop/新文件.jpg";
    int tag =2;
    if (tag==0) {
        //方法1 NSData
        [data writeToFile:filePath atomically:YES];
    }else if(tag==1){
        //方法2 NSFileHanle 假如文件不存在则会失败,应该先判断是否存在,再看是否需要创建
        NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:filePath];
        [handle writeData:data];
        [handle classCode];
    }else if(tag==2){
        //方法3 NSFileManager
        NSFileManager *manager= [NSFileManager defaultManager];
        [manager createFileAtPath:filePath contents:data attributes:nil];
    }else if (tag==3){
        // 方法4 NSMutableData
        NSMutableData *writer = [[NSMutableData alloc] init];
        [writer appendData:data];
        [writer writeToFile:filePath atomically:YES];
    }
}


@end

 

 
posted @ 2015-04-03 16:22  匹夫鹏  阅读(394)  评论(0编辑  收藏  举报