关于使用文件的若干方法的总结

---恢复内容开始---

首先,管理文件的一些方法,这里主要用到的是NSFileManager类,也用到了一些NSData类,NSData类创建的对象相当于是文件的缓存。

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *fName = @"testfile";
        NSFileManager *fm;
        NSDictionary *attr;
        NSData *fileData;

        //需要创建文件管理器的实例
        fm = [NSFileManager defaultManager];

        //首先确认测试文件存在
        if ([fm fileExistsAtPath:fName] == NO) {
            NSLog(@"File doesn‘t exist!!");
            return 1;
        }

        //创建一个副本
        if ([fm copyItemAtPath:fName toPath:@"newfile" error:NULL] == NO) {
            NSLog(@"File Copy Failed!");
            return 2;
        }

        //测试两个文件是否一致
        if([fm contentsEqualAtPath:fName andPath:@"newfile"] == NO){
            NSLog(@"Files are not Equal!");
            return 3;
        }

        //重命名副本
        if ([fm moveItemAtPath:@"newfile" toPath:@"newfile2" error:NULL] == NO) {
            NSLog(@"File rename Failed!");
            return 4;
        }

        //获取newfile2的大小
        if((attr = [fm attributesOfItemAtPath:@"newfile2" error:NULL]) == nil){
            NSLog(@"Couldn‘t get file attributes!");
            return 5;
        }
        NSLog(@"File size is %llu bytes",[[attr objectForKey:NSFileSize]unsignedLongLongValue]);

        //删除原始文件
        if ([fm removeItemAtPath:fName error:NULL] == NO) {
            NSLog(@"file removal failed!");
            return 6;
        }
        NSLog(@"All operations were successful");

        //显示新创建的文件内容
        NSLog(@"%@",[NSString stringWithContentsOfFile:@"newfile2" encoding:NSUTF8StringEncoding error:NULL]);

        //读取文件newfile2
        fileData = [fm contentsAtPath:@"newfile2"];

        if(fileData == nil){
            NSLog(@"File read faild!!");
        }

        //将缓存数据写入newfile3
        if ([fm createFileAtPath:@"newfile3" contents:fileData attributes:nil] == NO) {
            NSLog(@"Couldn‘t create the copy!");
        }

        NSLog(@"File copy was successful!");
    }
    return 0;
}

第二部分是关于文件目录的一些操作,比如说显示文件目录、显示目录下的文件等等:

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *dirName = @"testdir";
        NSString *path;
        NSFileManager *fm;
        NSDirectoryEnumerator *dirEnum;
        NSArray *dirArray;

        //创建文件管理器的实例
        fm = [NSFileManager defaultManager];

        //获取当前目录
        path = [fm currentDirectoryPath];
        NSLog(@"Current Directionary path is %@",path);

        //创建一个新的目录
        if ([fm createDirectoryAtPath:dirName withIntermediateDirectories:YES attributes:nil error:NULL] == NO) {
            NSLog(@"Couldn‘t create directory!");
            return 1;
        }

        //重新命名新的目录
        if ([fm moveItemAtPath:dirName toPath:@"newdir" error:NULL] == NO) {
            NSLog(@"Directionary rename failed!");
            return 2;
        }

        //更改目录到新的目录
        if ([fm changeCurrentDirectoryPath:@"newdir"] == NO) {
            NSLog(@"Change Directionart failed!");
            return 3;
        }

        //获取并显示当前的工作目录
        path =[fm currentDirectoryPath];
        NSLog(@"Current Directionary path is %@",path);

        //枚举目录
        dirEnum = [fm enumeratorAtPath:path];
        NSLog(@"Contents of %@",path);
        while ((path = [dirEnum nextObject]) != nil) {
            NSLog(@"%@",path);
        }

        //另一种枚举目录的方法
        dirArray = [fm contentsOfDirectoryAtPath:[fm currentDirectoryPath] error:NULL];
        NSLog(@"Contents using contentsOfDirectoryAtPath:error:");
        for (path in dirArray) {
            NSLog(@"%@",path);
        }

    }
    return 0;
}
时间: 2024-10-29 19:09:00

关于使用文件的若干方法的总结的相关文章

《Java虚拟机原理图解》1.5、 class文件中的方法表集合--method方法在class文件中是怎样组织的

0. 前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路.但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的. 感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成<Java虚拟机原理图解> 这个系列,以图解的形式,将抽象的JVM虚拟机的知识具体化,希望能够对想了解Java虚拟机原理的的Java程序员 提供点帮助.

c#操作XML文件的通用方法

c#操作XML文件的通用方法 本文导读:我们在编写C#程序时,经常会通过C#访问XML文件,实现对XML文档的读写操作.下面为大家列出了通用的调用方法,大家可以将这些方法放在共用类里,其它的程序共享调用就可以了. 下面通过一个类将我们平时用c#操作XML文件的通用方法详细的介绍一下,关于asp.net C#操作xml文档实现代码,大家可以参考参考. c# 代码 1 sing System; 2 using System.Data; 3 using System.Configuration; 4

《Java虚拟机原理图解》6、 class文件中的方法表集合--method方法在class文件中是怎样组织的

0. 前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路.但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的. 感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成<Java虚拟机原理图解> 这个系列,以图解的形式,将抽象的JVM虚拟机的知识具体化,希望能够对想了解Java虚拟机原理的的Java程序员 提供点帮助.

linux下SVN忽略文件/文件夹的方法

linux下SVN忽略文件/文件夹的方法 假设想忽略文件temp 1. cd到temp所在的目录下: 2. svn propedit svn:ignore . 注意:请别漏掉最后的点(.表示当前目录),如果报错请看下面 3. 打开的文件就是忽略列表文件了(默认是空的),每一行是一项,在该文件中输入temp,保存退出 4. svn st查看状态,temp的?状态已经消除了 如果在svn propedit svn:ignore .时报错:svn: None of the environment va

linux找不到动态链接库 .so文件的解决方法

如果使用自己手动生成的动态链接库.so文件,但是这个.so文件,没有加入库文件搜索路劲中,程序运行时可能会出现找不到动态链接库的情形. 可以通过ldd命名来查看可执行文件依赖的动态链接库,如下(其中D为可执行程序): 其中的libjson_linux-gcc-4.6_libmt.so cannot found. 解决这个问题: (1)在系统中查找这个文件(当然要保证系统中已经有这个.so文件,只是查找路径没有设置正确而已): sudo find / -name libjson_linux-gcc

Linux服务器删除乱码文件和文件夹的方法

Linux服务器删除乱码文件和文件夹的方法 首页进入乱码文件所在文件夹由于php大势所趋,所以接触Linux服务器的机会越来越多.不同于Windows服务器,Linux服务器只支持数字.英文等字符,对中文字符没办法识别.所以导致我们打包上传文件解压之后出现中文乱码文件和文件夹.网上有很多解决的办法,但是今天亲测用find命令能快速删除乱码的文件和文件夹,所以跟大家分享一下. 使用ls -i命令找到文件或文件夹的节点编号 前面的就是节点号了,接下来使用find命令查询并且删除 -inum指根据节点

ios 7.1 7.1.1 半完美越狱后 电脑訪问手机越狱文件夹的方法

7.1和7.1.1因为越狱不成熟,半完美越狱后电脑上无法訪问系统越狱文件夹,如var usr 等等. 今天有些意外地发现,能够在电脑上使用手机的越狱文件夹我手机 i4 7.1.1 联通 半完美越狱,没装Afc2Add,也没装Appsync 附上  --->我的半完美越狱过程 好了,以下直接正题 一.前提,必须安装ifile!     打开ifile,并转到 /var/mobile/media 文件夹下,然后点击右上角的 [ 编辑 ]如图: 二.点左下角的 + 号创建,如图: 三.点 [ 类型],

linux几种快速清空文件内容的方法

linux几种快速清空文件内容的方法 几种快速清空文件内容的方法: $ : > filename #其中的 : 是一个占位符, 不产生任何输出. $ > filename $ echo "" > filename $ echo /dev/null > filename $ echo > filename $ cat /dev/null > filename

PHP加载另一个文件类的方法

加载另一个文件类的方法 当前文件下有a.php 和b.php,想要在class b中引入class a <?php    class a    {        public $name = 'zhouqi';        public function say()        {            echo 'hello '.$this->name;        }    } <?php    class b    {        //require('a.php'); 错