基本文件操作:NSFileHandle的用法

利用NSFilehandle类提供的方法,允许更有效地使用文件。

一般而言,处理文件时都要经历以下三个步骤:

1.打开文件,并获取一个NSFileHandle对象,以便在后面的I/O操作中引用该文件

2.对打开的文件执行I/O操作(读取、写入、更新)

3.关闭文件

下面总结了一些常用的NSFileHandle的方法,在这个表中,fh是一个NSFileHandle对象,data是一个NSData对象,path是一个NSString 对象,offset是易额Unsigned long long变量。


上表中并为列出获取NSFileHandle以用于标准输入、标准输出、标准错误和空设置的方法。他们的格式为fileHandleWithDevice,其中Device可以是StandardInput、StandardOutput、StandardError或者NullDevice。

应该注意到,NSFileHandle类并没有提供创建文件的功能。必须使用NSFileManager方法来创建文件。因此,方法fileHandleForWritingAtPath:和hfileHandleUpdatingAtPath:都假定文件已经存在,否则返回nil。对于这两个方法,文件的偏移量都设为文件的开始,所以都是在文件的开始位置开始写入(或更新模式的读取)。另外,如果在UNIX系统下编程应该注意,打开用于读取的文件,不要截断文件;如果想要这么做,不得不自己完成这项操作。

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Objective-C 中,可以通过重写 `NSLog` 函数来将输出内容输出到指定文件中。具体操作如下: 1. 定义一个新的 `NSLog` 函数 ```objective-c void MyNSLog(NSString *format, ...) { va_list args; va_start(args, format); NSString *logStr = [[NSString alloc] initWithFormat:format arguments:args]; va_end(args); // 将输出内容写入文件 NSString *filePath = @"文件路径"; NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:filePath]; [fileHandle seekToEndOfFile]; [fileHandle writeData:[logStr dataUsingEncoding:NSUTF8StringEncoding]]; [fileHandle closeFile]; // 将输出内容输出到控制台 NSLog(@"%@", logStr); } ``` 在上面的代码中,首先定义了一个新的 `NSLog` 函数 `MyNSLog`。在这个函数中,首先将输入的格式化字符串格式化成一个字符串,然后将这个字符串写入到指定的文件中。接着,调用系统的 `NSLog` 函数将这个字符串输出到控制台中。 2. 重定义 `NSLog` 函数 ```objective-c #define NSLog(...) MyNSLog(__VA_ARGS__) ``` 在上面的代码中,使用 `#define` 宏定义将 `NSLog` 函数重定义为新的 `MyNSLog` 函数。 使用以上两个步骤,就可以将 `NSLog` 的输出内容同时输出到指定文件和控制台中。需要注意的是,如果文件路径不存在,则需要先创建该文件。另外,如果需要在多个文件中使用这个新的 `NSLog` 函数,可以将上面的代码写在一个公用的头文件中,然后在需要使用的文件中包含该头文件即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值