当前位置: 首页 > 编程日记 > 正文

OC文件操作(1)

1.文件的浅度遍历与深度遍历:

//NSFileManager * fm = [[NSFileManager alloc]init];//创建文件管理器
//第一步创建一个文件管理器
NSError * error= nil;
//显示路径下的内容,作用类似于ls -a指令
//返回值是把目录下的内容放到NSArray中
//浅度遍历
NSFileManager * fm = [NSFileManager defaultManager];
NSArray * array = [fm contentsOfDirectoryAtPath:@"/Users/aaaaa/Desktop"error:&error];
//成功返回nil错误返回失败信息
if(error)
{NSLog(@"Error=%@",error);return -1;//代表函数返回(结束函数)//exit(1);//结束当前进程
}
else
{NSLog(@"array=%@",array);
}//深度遍历
//可以显示子目录的内容
NSArray * array1 = [fm subpathsOfDirectoryAtPath:@"/Users/aaaaa/Desktop"error:&error];
if(error)
{NSLog(@"Error=%@",error);
}
else
{NSLog(@"array1=%@",array1);
}

2.创建目录:

NSFileManager * fm = [NSFileManager defaultManager];
NSError * error = nil;
//当前路径指的是可执行程序的路径而不是代码的路径
//创建目录  返回值:创建成功返回YES 失败返回NO
BOOL ret = [fm createDirectoryAtPath:@"./hello2/world"  //创建目录的路径 withIntermediateDirectories:YES//路径不存在是否创建目录 YES代表创建(会把不存在的目录也创建) NO代表不创建attributes:nil    //文件属性(权限),通常写nil代表默认权限error:&error];
if(ret)
{NSLog(@"success!");
}
else
{NSLog(@"error = %@",error);
}

创建文件

NSFileManager * fm = [NSFileManager defaultManager];
//创建文件
BOOL ret = [fm createFileAtPath:@"./1.txt" //路径以及文件名contents:nil //要创建的文件的内容 nil代表空文件 若文件以及存在会覆盖该文件
                     attributes:nil];[fm fileExistsAtPath:@"./1.txt"]//判断文件时候存在

3.拷贝文件/目录:

NSFileManager * fm = [NSFileManager defaultManager];
NSError * error = nil;
//拷贝文件/目录
//第二个参数必须要写全文件或者目录名字
BOOL ret = [fm copyItemAtPath:@"/Users/aaaaa/Desktop/string.c"//要复制的文件的路径toPath:@"./1.txt" //目的文件(文件名不要加空格)若以及存在会返回errorerror:&error];

4.移动(重命名)文件/目录:

//重命名(移动)文件或目录
//重命名:就是修改文件路径
//如果文件/目录存在 移动失败
ret = [fm moveItemAtPath:@"/Users/aaaaa/Desktop/"toPath:@"./1/1" //参数要写全称error:&error];

5.删除文件/目录:

/删除文件/目录
//谨慎使用(会直接删除 不会丢到废纸篓中)
ret = [fm removeItemAtPath:@"./1.txt"error:&error];

6.NSData与字符串:

NSString * str = @"hello world";
//将OC字符串转换成NSData类型
//NSData 文件缓冲区
NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];//将NSData类型转换成NSString类型
NSString * str2 = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

7.文件读写操作:

//文件读写操作
//第一步打开文件
//FILE * fp = fopen("./1.txt","w");文件指针
//文件句柄
//以只读方式打开
NSFileHandle * fh = [NSFileHandle fileHandleForReadingAtPath:@"/Users/aaaaa/Desktop/string.c"];//以只写方式打开
fh = [NSFileHandle fileHandleForWritingAtPath:@"/Users/aaaaa/Desktop/string.c"];
//以读写方式打开
fh = [NSFileHandle fileHandleForUpdatingAtPath:@"/Users/aaaaa/Desktop/string.c"];//OC的打开函数都会把偏移量定位在未见首
//若想在文件尾进行操作,可将文件偏移量定位到文件尾
[fh seekToEndOfFile];//定位到文件尾
     
NSData * data1 = [fh readDataOfLength:10];//读取指定个数字节
NSData * data2 = [fh readDataToEndOfFile];//从当前偏移量读到文件尾
[fh seekToFileOffset:10];//把文件偏移量定位到10字节

8.向文件中写数据:

NSFileHandle * fh2 = [NSFileHandle fileHandleForUpdatingAtPath:@"./1.txt"];
NSString * str = @"hello world";
NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];
//写数据必须要转化为NSData
[fh2 writeData:data];

9.获取文件长度:

//通过文件管理器获取文件属性然后通过字典获取文件长度
NSFileManager * fm = [NSFileManager defaultManager];
NSDictionary * dict = [fm attributesOfItemAtPath:@"/Users/aaaaa/Desktop/string.c"                                              error:&error];
//方法一:
NSLog(@"size = %lld",[dict fileSize]);
//方法二:
NSLog(@"%@",[dict objectForKey:NSFileSize]);

转载于:https://www.cnblogs.com/daojiao/p/4034623.html

相关文章:

10-flutter 使用http包请求和网络指示器

使用http package 进行网络请求操作 1 安装步骤 Step1 在pubspec.yaml 文件中添加依赖 dependencies:http: ^0.12.01Step2 flutter packages getStep3 导入头文件 import ‘package:http/http.dart’ as http; 2 使用 var responseBody;http.Response response await http.…

使用nat方式解决虚拟机联网问题

本文全文参考:http://jingyan.baidu.com/album/4e5b3e1957979d91901e24f1.html?picindex1,谢谢 对于很多的linux初学者来说,最开始学习linux时通常是在虚拟机上进行的,然而对于新手来说虚拟机联网会对他们来说是比较困难的。…

老年痴呆 数字化_设计老年人愉快数字体验的5条原则

老年痴呆 数字化by Kaye Mao毛凯(Kaye Mao) 设计老年人愉快数字体验的5条原则 (5 Principles for Designing Delightful Digital Experiences for Seniors) When we got my grandfather his first smart phone, he was thrilled. He had heard all about the wonders of video…

hdu 3664 1~n排列(aii ) 为k个数

http://acm.hdu.edu.cn/showproblem.php?pid3664 求1~n的排列个数&#xff0c;使得逆序数&#xff08;ai>i ) 为给定的k. dp[i][j]表示前1~i的排列中&#xff0c;有j个数是逆序数的个数. #include <cstdio> #include <cstdlib> #include <cmath> #includ…

四边参数值的设定

border&#xff0c;margin&#xff0c;padding 拿border举例 border&#xff1a;上&#xff0c;右&#xff0c;下&#xff0c;左。 border&#xff1a;上下&#xff0c;左右。 border&#xff1a;上下左右。 border&#xff1a;上&#xff0c;左右&#xff0c;下。转载于:https…

11-flutter事件监听

事件监听 1 本身支持事件检测&#xff0c;就可以直接使用onpress body:Center(child: RaisedButton(child: Text("Click"),onPressed: (){print("我被Click了");}),),2 如果本身不支持事件的检测&#xff0c; 使用 GestureDetector 添加一个点击事件 hom…

react前端开发_是的,React正在接管前端开发。 问题是为什么。

react前端开发by Samer Buna通过Samer Buna 是的&#xff0c;React正在接管前端开发。 问题是为什么。 (Yes, React is taking over front-end development. The question is why.) Update: This article is now part of my book “React.js Beyond The Basics”.更新&#xf…

12-flutter Textfield的使用

获取用户的输入用 TextField 或者TextFormField 的实现&#xff0c;通过控制器来实现获取用户的输入。 1 TextField 的属性 const TextField({Key key,this.controller,this.focusNode,// 这个属性可以用来监听输入框是否获取this.decoration const InputDecoration(),Text…

MyEclipse10整合Axis2插件

1、下载axis2的eclipse插件 2、把下载好的两个插件包解压后放置myeclipse10安装目录下的dropins文件夹中 3、重启MyEclipse10后 File->New->Other 到此Axis2插件安装完毕。 转载于:https://www.cnblogs.com/dreammyle/p/4036224.html

STM32GPIO管脚设置

&#xff08;1&#xff09;GPIO_Mode_AIN 模拟输入 &#xff08;2&#xff09;GPIO_Mode_IN_FLOATING 浮空输入&#xff08;3&#xff09;GPIO_Mode_IPD 下拉输入 &#xff08;4&#xff09;GPIO_Mode_IPU 上拉输入 &#xff08;5&#xff09;GPIO_Mode_Out_OD 开漏输出&#x…

数据结构中等号表示什么_通过分析2016年最重要的252个中等故事我学到了什么...

数据结构中等号表示什么Medium may be struggling to find a sustainable business model, but they have years worth of funding left, and more readers than ever.中型企业可能很难找到一种可持续的商业模式&#xff0c;但他们还有数年的可用资金&#xff0c;而且读者比以往…

event事件

10.2.6 事件传播 当事件目标是Window对象或其他一些单独对象&#xff08;比如XMLHttpRequest&#xff09;时&#xff0c;浏览器会简单的通过调用对象上适当的处理程序响应事件。 在调用在目标元素上注册的事件处理函数后&#xff0c;大部分事件会“冒泡”到DOM树根。 发生在文档…

[原创]用命令行工具删除TFS2010服务器上的工作区信息

下面的示例显示有关所有计算机上的所有用户已在地址 http://myserver:8080/tfs/DefaultCollection 上的以下团队项目集合中创建的所有工作区的列表。 c:\projects>tf workspaces /owner:*/computer:* /collection:http://myserver:8080/tfs/DefaultCollection tf workspace …

13-flutter 加载图片

Image Widget 1 flutter 加载图片的方式 new Image从ImageProvider 中获取图像new Image.asset使用key 从assetBundle 获取图片Image.network从网络中获取图片Image.file从本地文件获取图片Image.memory用来加载Uint8List资源&#xff08;字节数组&#xff09;图片 2 image 支…

react 组件样式_如何使用样式化组件为React组件创建视觉变体

react 组件样式by Gilad Dayagi通过吉拉德达亚吉 如何使用样式化组件为React组件创建视觉变体 (How to create visual variants for React components using styled-components) Styled-components is a library for styling React components that took the React world by s…

HDU 1406 完数

完数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 18647 Accepted Submission(s): 6894 Problem Description完数的定义&#xff1a;如果一个大于1的正整数的所有因子之和等于它的本身&#xff0c;则称这个…

14-flutter Animation 动画

动画 一 Animation 在Flutter中&#xff0c;Animation对象本身和UI渲染没有任何关系。Animation是一个抽象类&#xff0c;它拥有其当前值和状态&#xff08;完成或停止&#xff09;。其中一个比较常用的Animation类是Animation。 Flutter中的Animation对象是一个在一段时间内…

---Intel SSD 750 under Linux

https://wiki.archlinux.org/index.php/Solid_State_Drives/NVMe转载于:https://www.cnblogs.com/bzhao/p/6405268.html

谷歌数字图书馆_如何在没有联系的情况下找到6位数字的工作-提示使我获得了Google和其他技术巨头的工作机会...

谷歌数字图书馆Shortly after college, I began chasing something many people want but few ever get: a job they love.大学毕业后不久&#xff0c;我开始追求许多人想要但很少有人得到的东西&#xff1a;他们热爱的工作。 I left school with a biology degree and a job …

attribute

(verilog-2001) (*keep 1*) wire my_reg; 最大扇出信号设置 &#xff08;*maxfan 20*&#xff09;reg clk_en; 上电初始化 reg q 1b1; keep :确保组合逻辑不被优化 preserve:防止寄存器被优化掉。对于扇出较大的信号&#xff0c;可以同时定义两个信号来分担扇出&#xff0c…

算法基础之冒泡排序

data[10,4,33,21,54,3,9,11] //for index,i in enumerate(data[0:-1): for j in range(1,len(data)): for i in range(len(data)-j): if data[i]>data[i1]: tempdata[i1] data[i1]data[i] data[i]temp print(data) 转载于:https://www.cnblogs.com/my334420/p/6407843.html

15-flutter Scaffold详解

Scaffold 是一个实现基本的material design 的布局结构 appBar显示在界面顶部的一个 AppBarbody当前界面所显示的主要内容 WidgetfloatingActionButtonMaterial 设计中所定义的 FAB&#xff0c;界面的主要功能按钮persistentFooterButtons固定在下方显示的按钮&#xff0c;比…

成本管理系统开源_开源教科书如何降低大学成本

成本管理系统开源Over the past 10 years, the cost of textbooks in the US has increased by 88%. This has contributed to more than $1 trillion in total student loan debt, which Americans are struggling pay back.在过去的10年中&#xff0c;美国的教科书成本增加了…

OA项目12:系统管理之用户管理

首注&#xff1a;本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记&#xff0c;本人用此来加强巩固自己开发知识&#xff0c;如有网友转载&#xff0c;请注明。谢谢。  一 之前在第8节时已经将User实体及映射文件建立好了&#xff0c;所以设计实体已…

16-flutter-Swiper 插件的使用

Flutter-Swiper 插件的使用 1 在pubspec.ymal 中去导入插件 dependencies:flutter:sdk: flutter# The following adds the Cupertino Icons font to your application.# Use with the CupertinoIcons class for iOS style icons.cupertino_icons: ^0.1.2flutter_swiper: ^1.1…

NPOI导Excel样式设置

一、创建一个Excel //创建一个工作簿 XSSFWorkbook workbook new XSSFWorkbook(); //创建一个页 ISheet sheet workbook.CreateSheet("sheet1"); //创建一行 IRow row sheet.CreateRow(0); //创建一列 ICell ce…

谢尔盖.布林的早期思想_谷歌联合创始人谢尔盖·布林(Sergey Brin)谈人工智能与自动化...

谢尔盖.布林的早期思想Here are three links worth your time:这是三个值得您花费时间的链接&#xff1a; Google cofounder Sergey Brin talks about AI, automation, and the future of education (34 minute watch) Google联合创始人谢尔盖布林(Sergey Brin)谈论人工智能&a…

17-flutter导航栏渐变效果

MediaQuery.removePadding 移除顶部的 padding import package:flutter/material.dart; // 导入swiper 组件 import package:flutter_swiper/flutter_swiper.dart;const APPBAR_SCROLL_OFFSET 200; class HomePage extends StatefulWidget {// 重写Create State 方法override…

链表之逆转链表

链表之逆转链表 传入一个Node指针&#xff0c;将它指向的链表进行逆置&#xff0c;返回逆置后的新链表&#xff0c;注意操作过程中不要额外申请空间&#xff0c;即在传入的链表中进行节点逆置. 代码&#xff1a; Node * reverse_list(Node *head){Node * preNULL;Node * curhea…

如何使用Redux-saga和ReactDnD测试React和Redux(哇!)

by Gregory Beaver通过格雷戈里海狸 如何使用Redux-saga和ReactDnD测试React和Redux(哇&#xff01;) (How to test React and Redux with Redux-saga and ReactDnD (whew!)) 帮助程序和系统使测试更加容易 (Helpers and systems to make testing easier) This article is the…