NSFileHandle & NSFileManager 文件创建及写入例程

/*

 * 例程说明:

 * 创建一个Date.text文件,获取当前的日期,将日期格式为“2013/08/12 22:50:00”的形式。

 * 然后以一秒记录一次,将新的时间存入到文件中。

 */

 


/*

 * 新建 WriteDate.h 文件及 WriteDate 类声明

 */


#import <Foundation/Foundation.h>


@interface WriteDate : NSObject

- (void) runWrite;

@end


/*

 * 新建 WriteDate.m 文件及 WriteDate 类实现

 */

#import "WriteDate.h"


@implementation WriteDate


- (void) runWrite {

    

    // 创建文件管理对象

    NSFileManager *fileManager = [NSFileManager defaultManager];

    // 获取当前用户 路径 /Users/xxh

    NSString *path = NSHomeDirectory();

    // 文件路径

    NSString *filePath = [path stringByAppendingPathComponent:@"Desktop/Date.text"];

    // 新建文件

    BOOL success = [fileManager createFileAtPath:filePath contents:nil attributes:nil];

    if (success) {

        NSLog(@"create success!");

    }

    

    // 文件写操作对象

    NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:filePath];


    // 创建定时器

    [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction:) userInfo:fileHandle repeats:YES];

}


- (void) timerAction:(NSTimer *)timer {

    NSFileHandle *fileHandle = timer.userInfo;

    // 文件指针移动到文件未尾

    [fileHandle seekToEndOfFile];

    

    // 限制关闭条件

    static int n = 1; // 10后关闭定时器

    

    // 获取当前时间

    NSDate *nowDate = [NSDate date];

    // 时间格式化

    NSDateFormatter *dateFormater = [[NSDateFormatter alloc] init];

    [dateFormater setDateFormat:@"YYYY/MM/DD HH:mm:ss"];

    // 返回时间字符串

    NSString *dateString = [dateFormater stringFromDate:nowDate];

    // 添加换行符

    dateString = [dateString stringByAppendingString:@"\n"];

    // 通过数据编码 转换成数据对象

    NSData *data = [dateString dataUsingEncoding:NSUTF8StringEncoding];

    // 写入文件

    [fileHandle writeData:data];

    

    if (n == 10) {

        [timer invalidate];     // 关闭定时间

        [fileHandle closeFile]; // 关闭文件句柄

    }

    n++;

    

}


@end


/*

 * main 方法

 */

#import <Foundation/Foundation.h>

#include "WriteDate.h"


int main(int argc, const char * argv[])

{


    @autoreleasepool {

        

        WriteDate *writeDate = [[WriteDate alloc] init];

        [writeDate runWrite];

    }


    [[NSRunLoop currentRunLoop] run];

    

    return 0;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值