【非凡程序员】 OC第十七节课 文件操作(NSFileManager和NSFileHandle)

文件操作

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
       
        //----------- NSFileManager---------//
       
        //实例化一个对象
        NSFileManager * f=[NSFileManager defaultManager];
       
        //根据aaa.txt的路径读取内容
        NSData *data1=[f contentsAtPath:@"/Users/feifanchengxuyuan/Desktop/aaa.txt"];
        NSString *str1=[[NSString alloc]initWithData:data1 encoding:NSUTF8StringEncoding];
        NSLog(@"%@",str);
        
        //从一个文件中直接获取数据(不需要转换)
        NSLog(@"%@", [NSString stringWithContentsOfFile:@"/Users/feifanchengxuyuan/Desktop/aaa.txt" encoding:NSUTF8StringEncoding error:nil]);

//创建一个b.txt  内容为空
        //创建一个bbb.txt 并且把aaa.txt的文件复制到bbb.txt中
        [f createFileAtPath:@"/Users/feifanchengxuyuan/Desktop/b.txt" contents:nil attributes:nil];
        [f createFileAtPath:@"/Users/feifanchengxuyuan/Desktop/bbb.txt" contents:data1 attributes:nil];
       
        //把str写入到ccc.txt (如果是已经存在该文件,则会覆盖之前的内容)
        NSString *[email protected]"zhang";
        NSData *data2=[str2 dataUsingEncoding:NSUTF8StringEncoding];
        //创建文件
        [f createFileAtPath:@"/Users/feifanchengxuyuan/Desktop/ccc.txt" contents:data2 attributes:nil];
   
        //获取路径
        NSString *str3= [f currentDirectoryPath];
        NSLog(@"%@",str3);

//遍历当前路径
        NSArray *array=  [f contentsOfDirectoryAtPath:@"/Users/feifanchengxuyuan/Desktop" error:nil];
        NSLog(@"%@,array);
        
         // 枚举遍历
        NSLog(@"%@:[f enumeratorAtPath:@"/Users/feifanchengxuyuan/Desktop"]);
        NSEnumerator *ee=[f enumeratorAtPath:@"/Users/feifanchengxuyuan/Desktop"];
        NSArray *array1=[ee allObjects];
        NSLog(@"%@,array1);

//深度遍历当前路径
        NSArray * array1=[f subpathsAtPath:@"/Users/feifanchengxuyuan/Desktop"];
        NSLog(@"%@",array1);

// 创建文件夹  withIntermediateDirectories:YES如果没有该文件,就创建,     NO,如果不存就会报错
        NSError *error = nil;
        [f createDirectoryAtPath:@"/Users/feifanchengxuyuan/Desktop3/aaa1" withIntermediateDirectories:YES attributes:nil error:&error];
        if( error )
        {
            NSLog( @"%@", error );
        }
       
   
       //----------- NSFileHandle--------(重点)-------//

//1 文件必须创建
        //2文件必须给出足够的权限 如 chmod 777文件名+文件类型
       
        //获取用户主目录
        NSString *homepath = NSHomeDirectory();
        NSLog( @"homepath: %@", homepath);
        //根据参数连接目录
        NSString *sourcepath = [homepath stringByAppendingPathComponent:@"/Desktop/tttt2.txt"];
        NSLog( @"sourcepath: %@", sourcepath );
       
        //创建NSFileHandle对象类型fileHandleForUpdatingAtPath 为可更新的类型
        //fileHandleForReadingAtPath //读取
        NSFileHandle *filhandle = [NSFileHandle fileHandleForUpdatingAtPath:sourcepath];
       
        //定位偏移量到文件内容尾部
        [filhandle seekToEndOfFile];
       
        //定义要追加的字符串
        NSString *string = @"hello xiaohe   sacnkwanc;w\n";
       
        //转化成文件流
        NSData *nsdate = [string dataUsingEncoding:NSUTF8StringEncoding];
       
        //写数据
        [filhandle writeData:nsdate];
        //关闭文件
        [filhandle closeFile];

//echo jjjjjj>>aaa.txt  在终端中给aaa.txt添加jjjjjj文本
          cat 文件名是读取内容    }
    return 0;
}

时间: 2024-10-25 12:02:57

【非凡程序员】 OC第十七节课 文件操作(NSFileManager和NSFileHandle)的相关文章

【非凡程序员】 OC第十七节课 文件操作二 (归档和解档)

//-----------------------------归档和解档-----(重点)-------.-----------//        //可变的文件流        NSMutableData *nutabdata=[[NSMutableData alloc]init];        //把用归档格式的数据值给可变的文件流        NSKeyedArchiver *keyde=[[NSKeyedArchiver alloc]initForWritingWithMutable

黑马程序员--Java基础学习笔记【文件操作、递归】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 文件操作 文件和目录路径名的抽象表示形式. 成员变量 StringpathSeparator= File.pathSeparator; // 路径分隔符 System.out.println(pathSeparator); // ; Stringseparator= File.separator;// 默认名称分隔符 System.out.println(separator); // \ 构造

【非凡程序员】 OC第十五节课 (观察者模式和KVO进行对比)

今天主要学了观察者模式,以及回顾复习了KVO,两者进行对比 什么是观察者模式? 我们先打个比方,这就像你订报纸.比如你想知道美国最近放生了些新闻,你可能会订阅一份美国周刊,然后一旦美国有了新的故事,美国周刊就发一刊,并邮寄给你,当你收到这份报刊,然后你就能够了解美国最新的动态.其实这就是观察者模式,A对B的变化感兴趣,就注册为B的观察者,当B发生变化时通知A,告知B发生了变化.这是一种非常典型的观察者的用法,我把这种使用方法叫做经典观察者模式 KVO的全称是Key-Value Observer,

【非凡程序员】 OC第九节课 (KVO的应用)

这是一个QQ密码登陆地址和密码同时被修改时,通知用户QQ账号出现问题 该题难度主要在于判断监控的两次数据都是被修改的 有两种方案: ①定义一个可变的数组,把每次监控到的新旧数据添加进去,进行对比 ②定义一个变量,每修改一次,该变量就自加一次,判断为2时,通知用户 (1)main函数//  main.m//  QQ被盗////  Created by 非凡程序员 on 15/5/27.//  Copyright (c) 2015年 非凡程序员. All rights reserved.// #im

【非凡程序员】 OC第五节课 (数据类型NSString和NSString)

//  main.m//  ZiFuChuan////  Created by 非凡程序员 on 15/5/18.//  Copyright (c) 2015年 非凡程序员. All rights reserved.// #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {    @autoreleasepool { NSString *[email protected]"AB"

【非凡程序员】  OC第十节课 (代码块)

代码块就相当于C语言中一个函数一样 ////  main.m//  DaiMaKuai////  Created by 非凡程序员 on 15/5/28.//  Copyright (c) 2015年 非凡程序员. All rights reserved.// #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {    @autoreleasepool { int i=7; //代码块格式如下: 

centos shell编程3【告警系统】 第三十七节课

centos shell编程3[告警系统]  第三十七节课 上半节课 下半节课 整个项目没有任何架构,都是单机的,没有服务器端和客户端的概念只是简单调用一下shell脚本,子shell,通过添加更多的shell脚本扩展功能 mail.sh:做邮件收敛uptime或w 获取load average 需要安装php环境yum install -y php 需求: 使用shell定制各种个性化告警工具,但需要统一化管理.规范化管理. 思路:指定一个脚本包,包含主程序.子程序.配置文件.邮件引擎.输出日

centos samba/squid 配置 第二十七节课

centos  samba/squid 配置  第二十七节课 上半节课 下半节课 一. samba配置1. 什么是sambaSamba服务类似于windows上的共享功能,可以实现在Linux上共享文件,windows上访问,当然在Linux上也可以访问到.是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务. 注意:smb侦听端口:139  和  445  端口 2. 安装配置samba yum install -y samba samb

[非凡程序员]手写UIDatePicker和UIPickerView

// //  ViewController.h //  手写UIDatePicker // //  Created by 非凡 程序员 on 15/11/13. //  Copyright (c) 2015年 非凡 程序员. All rights reserved. // #import <UIKit/UIKit.h> @interface  ViewController : UIViewController @property(nonatomic,strong)UIDatePicker *d