Objective-c NSFileManager类和NSFileHandle类的使用

2024-06-19 02:08

本文主要是介绍Objective-c NSFileManager类和NSFileHandle类的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NSFileManager* fm = [NSFileManager defaultManager];
        //判断一个文件是否存在,返回一个BOOL值
        if([fm fileExistsAtPath:@"/tmp/AddressCard.m"])
        {
            NSLog(@"exist");
        }
        else
        {
            NSLog(@"not exist");
        }
       
        //将文件中的内容写入到缓冲区中, 返回一个NSData对象
        NSData* data = [NSData dataWithContentsOfFile:@"/tmp/AddressCard.m"];
        //将缓冲区中的内容写入到新文件中,返回一个BOOL值
        if([data writeToFile:@"/tmp/addressCard.txt" atomically:YES])
        {
            NSLog(@"Write Successful");
        }
        else
        {
            NSLog(@"Write failed");
        }
       
        //获取文件的属性,保存到字典中
        NSError* error = nil;
        NSDictionary* attributesDic = [fm attributesOfItemAtPath:@"/tmp/AddressCard.m" error:&error];
        NSLog(@" %@",attributesDic);
        //查看字典中某个属性的值
        NSLog(@" %@",[attributesDic objectForKey:@"NSFileHFSCreatorCode"]);
       
        //将文件中的内容保存到缓冲区中,与NSData类中的dataWithContentsOfFile:方法类似
        NSData* data2 = [fm contentsAtPath:@"/tmp/AddressCard.m"];
   
        //创建一个文件,内容为缓冲区中的内容,属性为默认值   返回值为BOOL值
        [fm createFileAtPath:@"/tmp/a.txt" contents:data2 attributes:nil];
        if([fm fileExistsAtPath:@"/tmp/a.txt"])
        {
            NSLog(@"create succeed");
        }
        else
        {
            NSLog(@"create failed");
        }
        NSString* str = [NSString stringWithContentsOfFile:@"/tmp/AddressCard.m" encoding:NSUTF8StringEncoding error:nil];
        NSLog(@" %@",str);
        NSString* pathStr = @"/tmp/Address.txt";
        NSLog(@" %@",[pathStr pathComponents]);//返回路径的组成部分,保存在NSArray中,“/”根目录和文件需要加引号,目录不需要
       
        NSLog(@" %@",[pathStr pathExtension]);//返回文件的扩展名  txt
       
        NSLog(@" %@",[pathStr lastPathComponent]);//返回目录的最后一个组成部分  Address.txt
       
        //下面两种方法构建绝对路径
        NSString* debugStr = [fm currentDirectoryPath];//返回Debug所在的目录
        NSLog(@" %@",[debugStr stringByAppendingFormat:@"/abc.txt"]);//打印文件“abc.txt”所在的目录
        NSLog(@" %@",[debugStr stringByAppendingPathComponent:@"abc.txt"]);//与上个方法不同的是,上面需要加“/”,而这个不需要
       
        //把一个文件中的内容写入到另一个文件中
        NSFileHandle* handleR = [NSFileHandle fileHandleForReadingAtPath:@"/tmp/AddressCard.m"];//打开并读取文件
        if(![fm fileExistsAtPath:@"/tmp/addresscard.m"])//判断要写入的文件是否存在,不存在则创建
        {
            [fm createFileAtPath:@"/tmp/addresscard.m" contents:nil attributes:nil];
        }
        NSFileHandle* handleW = [NSFileHandle fileHandleForWritingAtPath:@"/tmp/addresscard.m"];//打开并写入文件
       
        //开始进行读写操作
        NSData* data3 = nil;//NSData是不可变的,是指data3所指向的区域的内容不可以发生变化,但是data3的指向可以发生变化
        while([(data3 = [handleR readDataOfLength:100]) length] > 0)
        {
            [handleW writeData:data3];//边读边写
        }
       
        if([fm contentsEqualAtPath:@"/tmp/AddressCard.m" andPath:@"/tmp/addresscard.m"])//判断两个文件的内容是否相同
        {
            NSLog(@"contents equal");
        }
        else
        {
            NSLog(@"not equal");
        }
       
        [handleR closeFile];
        [handleW closeFile];

这篇关于Objective-c NSFileManager类和NSFileHandle类的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1073705

相关文章

如何Python使用设置word的页边距

《如何Python使用设置word的页边距》在编写或处理Word文档的过程中,页边距是一个不可忽视的排版要素,本文将介绍如何使用Python设置Word文档中各个节的页边距,需要的可以参考下... 目录操作步骤代码示例页边距单位说明应用场景与高级用China编程途小结在编写或处理Word文档的过程中,页边距是一个

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

使用JavaConfig配置Spring的流程步骤

《使用JavaConfig配置Spring的流程步骤》JavaConfig是Spring框架提供的一种基于Java的配置方式,它通过使用@Configuration注解标记的类来替代传统的XML配置文... 目录一、什么是 JavaConfig?1. 核心注解2. 与 XML 配置的对比二、JavaConf

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

Python使用python-docx实现自动化处理Word文档

《Python使用python-docx实现自动化处理Word文档》这篇文章主要为大家展示了Python如何通过代码实现段落样式复制,HTML表格转Word表格以及动态生成可定制化模板的功能,感兴趣的... 目录一、引言二、核心功能模块解析1. 段落样式与图片复制2. html表格转Word表格3. 模板生

go rate 原生标准限速库的使用

《gorate原生标准限速库的使用》本文主要介绍了Go标准库golang.org/x/time/rate实现限流,采用令牌桶算法控制请求速率,提供Allow/Reserve/Wait方法,具有一定... 目录介绍安装API介绍rate.NewLimiter:创建限流器limiter.Allow():请求是否

Python使用Turtle实现精确计时工具

《Python使用Turtle实现精确计时工具》这篇文章主要为大家详细介绍了Python如何使用Turtle实现精确计时工具,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录功能特点使用方法程序架构设计代码详解窗口和画笔创建时间和状态显示更新计时器控制逻辑计时器重置功能事件

Swagger2与Springdoc集成与使用详解

《Swagger2与Springdoc集成与使用详解》:本文主要介绍Swagger2与Springdoc集成与使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1. 依赖配置2. 基础配置2.1 启用 Springdoc2.2 自定义 OpenAPI 信息3.

Golang interface{}的具体使用

《Golanginterface{}的具体使用》interface{}是Go中可以表示任意类型的空接口,本文主要介绍了Golanginterface{}的具体使用,具有一定的参考价值,感兴趣的可以了... 目录一、什么是 interface{}?定义形China编程式:二、interface{} 有什么特别的?✅