您的位置:首页 > 其它

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

2013-08-12 22:58 501 查看
/*

 * 例程说明:

 * 创建一个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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐