1,引用和使用文件

NSFileManager 是一个单例对象,在mac应用中可以获取任何地址,在IOS中获取的是相对应的应用程序的地址。可以使用 defaultManager 来得到当前应用程序地址,例如。

NSFileManager *fileManager = [NSFileManager defaultManager];

模拟器目录 /Users/username/Library/Application Support/iPhone Simulator/

一旦有了参考,你便可以得到相应目录,例如你想得到currentDirectoryPath

目录。

NSString *currentDirectoryPath = [fileManager currentDirectoryPath];

想切换目录,用changeCurrentDirectoryPath,如

[fileManager changeCurrentDirectoryPath:@"/Users/Shared”];

代码例子。

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *currentDirectoryPath = [fileManager currentDirectoryPath];

NSLog(@"currentDirectoryPath = %@---", currentDirectoryPath);

[fileManager changeCurrentDirectoryPath:@"/Users/Shared"];

currentDirectoryPath = [fileManager currentDirectoryPath];

NSLog(@"currentDirectoryPath = %@+++", currentDirectoryPath);

2,mac目录引用

使用NSSearchPathForDirectoriesInDomains

例如

NSString *bundlePath = [[NSBundle mainBundle] bundlePath];

NSLog(@"%@++", bundlePath);

打印的值大概是

/Users/guanliyang/Library/Developer/Xcode/DerivedData/filePath-dgfhcnomuvxhzpepzbrxbrfkhkkz/Build/Products/Debug++

如果想得到文档目录

NSString *directoryPathName = [NSSearchPathForDirectoriesInDomains

(NSDocumentDirectory,NSAllDomainsMask, YES) lastObject];

更多参数请参考原著objective-C recipes。

3,获取IOS引用目录

NSString *bundlePath = [[NSBundle mainBundle] bundlePath];

NSLog(@"%@", bundlePath);

这个得到的是你IOS应用的主目录,/Users/guanliyang/Library/Application Support/iPhone Simulator/7.1/Applications/1A888392-101B-40B1-A47A-195C19DBC18E/aa.app

如果你想得到模拟器的文档目录,你可以这样做

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

NSLog(@"%@", documentsDirectory);

还有其他几个选项,IOS模拟器默认生成的几个目录

NSDocumentDirectory  Location for user-generated content (read-write, backed up) The

NSLibraryDirectory  app’s library directory (read-write, backed up)

NSCachesDirectory  A directory for cached files (read-write, not backed up)

默认只生成这三个目录。

4,获取文件属性。

先指定文件

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *filePathName = @"/Users/Shared/textfile.txt”;

声明error

NSError *error = nil;

给定文件路径,试着读取文件并查看是否有错。

NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:filePathName error:&error];

如果没有错误,获取文件相关信息。

if(!error){

NSDate *dateFileCreated = [fileAttributes valueForKey:NSFileCreationDate];

NSString *fileType = [fileAttributes valueForKey:NSFileType];

}

还有很多相关信息可打印,比如大小,所属用户,文件个数等等....

5,获取文件子目录和目录中的目录。

先得到文件列表

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *sharedDirectory = @"/Users/Shared”;

NSError *error = nil;

NSArray *listOfFiles = [fileManager contentsOfDirectoryAtPath:sharedDirectory

error:&error];

递归目录,可以使用subpathsOfDirectoryAtPath:error

例如

NSArray *listOfSubPaths = [fileManager subpathsOfDirectoryAtPath:sharedDirectory

error:&error];

例子代码

int main(int argc, const char * argv[])

{

@autoreleasepool {

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *sharedDirectory = @"/Users/Shared";

NSError *error = nil;

NSArray *listOfFiles = [fileManager contentsOfDirectoryAtPath:sharedDirectory

error:&error];

if(!error)

NSLog(@"Contents of shared directory: %@", listOfFiles);

NSArray *listOfSubPaths = [fileManager subpathsOfDirectoryAtPath:sharedDirectory

error:&error];

if(!error)

NSLog(@"Sub Paths of shared directory”: %@", listOfSubPaths);

}

return 0;

}

6,管理目录

用代码操作目录。

使用NSFileManager,

createDirectoryAtPath:withIntermediateDirectories:attributes:error:可以创建目录,

moveItemAtPath:toPath:error: 可以移动目录,

removeItemAtPath:error:删除目录,

copyItemAtPath:toPath:error:拷贝目录

具体代码

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *sharedDirectory = @"/Users/Shared/NewDirectory1/NewSubDirectory1";

NSError *error = nil;

创建

BOOL directoryCreated = [fileManager createDirectoryAtPath:newDirectory

withIntermediateDirectories:YES

attributes:nil

error:&error];

该函数返回布尔值,提示是否创建成功。

同理,移动文件。

NSString *directoryMovedTo = @"/Users/Shared/NewSubDirectory1";

BOOL directoryMoved = [fileManager moveItemAtPath:newDirectory

toPath:directoryMovedTo

error:&error];

删除目录

NSString *directoryToRemove = @"/Users/Shared/NewDirectory1";

BOOL directoryRemoved =[fileManager removeItemAtPath:directoryToRemove

error:&error];

复制目录。

NSString *directoryToCopy = @"/Users/Shared/NewSubDirectory1";

NSString *directoryToCopyTo = @"/Users/Shared/CopiedDirectory";

BOOL directoryCopied =[fileManager copyItemAtPath:directoryToCopy

toPath:directoryToCopyTo

error:&error];

具体代码例子。

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *newDirectory =@"/Users/Shared/NewDirectory1/NewSubDirectory1";

NSError *error = nil;

BOOL directoryCreated = [fileManager createDirectoryAtPath:newDirectory

withIntermediateDirectories:YES

attributes:nil

error:&error];

if(!error)

NSLog(@"directoryCreated = %i with no error", directoryCreated);

else

NSLog(@"directoryCreated = %i with error %@", directoryCreated, error);

NSString *directoryMovedTo = @"/Users/Shared/NewSubDirectory1";

BOOL directoryMoved = [fileManager moveItemAtPath:newDirectory

toPath:directoryMovedTo

error:&error];

if(!error)

NSLog(@"directoryMoved = %i with no error", directoryMoved);

else

NSLog(@"directoryMoved = %i with error %@", directoryMoved, error);

NSString *directoryToRemove = @"/Users/Shared/NewDirectory1";

BOOL directoryRemoved =[fileManager removeItemAtPath:directoryToRemove

error:&error];

if(!error)

NSLog(@"directoryRemoved = %i with no error", directoryRemoved);

else

NSLog(@"directoryRemoved = %i with error %@", directoryRemoved, error);

NSString *directoryToCopy = @"/Users/Shared/NewSubDirectory1";

NSString *directoryToCopyTo = @"/Users/Shared/CopiedDirectory";

BOOL directoryCopied =[fileManager copyItemAtPath:directoryToCopy

toPath:directoryToCopyTo

error:&error];

if(!error)

NSLog(@"directoryCopied = %i with no error", directoryCopied);

else

NSLog(@"directoryCopied = %i with error %@", directoryCopied, error);

7,管理文件。

添加,移动,复制,删除文件。

代码例子,图片不能访问可新找一图片地址。

NSFileManager *fileManager = [NSFileManager defaultManager];

NSURL *url = [NSURL URLWithString:@"http://img5.imgtn.bdimg.com/it/u=3163907393,1865504758&fm=23&gp=0.jpg”];

用NSData为图片对象,

NSData *dataObject = [NSData dataWithContentsOfURL:url];

创建图片

NSString *newFile = @"/Users/Shared/apples-oranges.jpg";

BOOL fileCreated = [fileManager createFileAtPath:newFile

contents:dataObject

attributes:nil];

移动图片

NSError *error = nil;

NSString *fileMovedTo = @"/Users/Shared/apples-oranges-moved.jpg";

BOOL fileMoved = [fileManager moveItemAtPath:newFile

toPath:fileMovedTo

error:&error];

删除图片

NSString *fileToRemove = @"/Users/Shared/apples-oranges-moved.jpg";

BOOL fileRemoved =[fileManager removeItemAtPath:fileToRemove

error:&error];

复制图片

NSString *fileToCopy = @"/Users/Shared/apples-oranges-moved.jpg";

NSString *copiedFileName = @"/Users/Shared/apples-oranges-backup-copy.jpg";

BOOL fileCopied = [fileManager copyItemAtPath:fileToCopy

toPath:copiedFileName

error:&error];

具体代码例子。

NSFileManager *fileManager = [NSFileManager defaultManager];

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com/img/baidu_sylogo1.gif"];

NSData *dataObject = [NSData dataWithContentsOfURL:url];

NSString *newFile = @"/Users/Shared/apples-oranges.jpg";

BOOL fileCreated = [fileManager createFileAtPath:newFile

contents:dataObject

attributes:nil];

NSLog(@"fileCreated = %i with no error", fileCreated);

NSError *error = nil;

NSString *fileMovedTo = @"/Users/Shared/apples-oranges-moved.jpg";

BOOL fileMoved = [fileManager moveItemAtPath:newFile

toPath:fileMovedTo

error:&error];

if(!error)

NSLog(@"fileMoved = %i with no error", fileMoved);

else

NSLog(@"fileMoved = %i with error %@", fileMoved, error);

NSString *fileToCopy = @"/Users/Shared/apples-oranges-moved.jpg";

NSString *copiedFileName = @"/Users/Shared/apples-oranges-backup-copy.jpg";

BOOL fileCopied = [fileManager copyItemAtPath:fileToCopy

toPath:copiedFileName

error:&error];

if(!error)

NSLog(@"fileCopied = %i with no error", fileCopied);

else

NSLog(@"fileCopied = %i with error %@", fileCopied, error);

NSString *fileToRemove = @"/Users/Shared/apples-oranges-moved.jpg";

BOOL fileRemoved =[fileManager removeItemAtPath:fileToRemove

error:&error];

if(!error)

NSLog(@"fileRemoved = %i with no error", fileRemoved);

else

NSLog(@"fileRemoved = %i with error %@", fileRemoved, error);

可以更改容易查看目录做具体测试。

8,检查文件状态。

常用方法。

 fileExistsAtPath:

 isReadableFileAtPath:

 isWritableFileAtPath:

 isExecutableFileAtPath:  isDeletableFileAtPath:.

检查文件是否存在。

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *filePathName = @"/Users/Shared/textfile.txt”;

BOOL fileExists = [fileManager fileExistsAtPath:filePathName];

文件是否可读

BOOL fileIsReadable = [fileManager isReadableFileAtPath:filePathName];

是否可写

BOOL fileIsWriteable = [fileManager isWritableFileAtPath:filePathName];

最后,文件是否可删除。

BOOL fileIsDeleteable = [fileManager isDeletableFileAtPath:filePathName];

具体代码例子。

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *filePathName = @"/Users/Shared/textfile.txt";

BOOL fileExists = [fileManager fileExistsAtPath:filePathName];

if(fileExists)

NSLog(@"%@ exists", filePathName);

else

NSLog(@"%@ doesn't exist", filePathName);

BOOL fileIsReadable = [fileManager isReadableFileAtPath:filePathName];

if(fileIsReadable)

NSLog(@"%@ is readable", filePathName);

else

NSLog(@"%@ isn't readable", filePathName);

BOOL fileIsWriteable = [fileManager isWritableFileAtPath:filePathName];

if(fileIsWriteable)

NSLog(@"%@ is writable", filePathName);

else

NSLog(@"%@ isn't writable", filePathName);

BOOL fileIsExecutable = [fileManager isExecutableFileAtPath:filePathName];

if(fileIsExecutable)

NSLog(@"%@ is an executable", filePathName);

else

NSLog(@"%@ isn't an executable", filePathName);

BOOL fileIsDeleteable = [fileManager isDeletableFileAtPath:filePathName];

if(fileIsDeleteable)

NSLog(@"%@ is deletable", filePathName);

else

NSLog(@"%@ isn't an deletable", filePathName);

没文件可以自己touch创建一个。

9,更改文件属性。

文件管理对象,文件,错误对象。

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *filePathName = @"/Users/Shared/textfile.txt";

NSError *error = nil;

建立一个字典数组以便获取文件属性列表。

NSMutableDictionary *attributes = [[NSMutableDictionary alloc] init];

[attributes setObject:[NSDate date] forKey:NSFileModificationDate];

我们只改一下文件的修改日期

BOOL attributeChanged = [fileManager setAttributes:attributes

ofItemAtPath:filePathName

error:&error];

具体代码

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *filePathName = @"/Users/Shared/textfile.txt";

NSError *error = nil;

//Get the file attributes so you can compare later on:

NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:filePathName

error:&error];

if(!error)

NSLog(@"%@ file attributes (before): %@",filePathName, fileAttributes);

NSMutableDictionary *attributes = [[NSMutableDictionary alloc] init];

[attributes setObject:[NSDate date] forKey:NSFileModificationDate];

BOOL attributeChanged = [fileManager setAttributes:attributes

ofItemAtPath:filePathName

error:&error];

if(error)

NSLog(@"There was an error: %@", error);

else{

NSLog(@"attributeChanged = %i", attributeChanged);

//Get the file attributes to see the change:

NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:filePathName

error:&error];

if(!error)

NSLog(@"%@ file attributes (after): %@",filePathName, fileAttributes);

ObjectiveC 文件操作一的更多相关文章

  1. ObjectiveC 文件操作二

    10,文件委托,以便操作文件.头部看起来像是这样. @interface MyFileManager : NSObject @property(strong)NSFileManager *fileMa ...

  2. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

  3. 野路子出身PowerShell 文件操作实用功能

    本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...

  4. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

  5. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

  6. SQL Server附加数据库报错:无法打开物理文件,操作系统错误5

    问题描述:      附加数据时,提示无法打开物理文件,操作系统错误5.如下图: 问题原因:可能是文件访问权限方面的问题. 解决方案:找到数据库的mdf和ldf文件,赋予权限即可.如下图: 找到mdf ...

  7. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  8. Linux文件操作的主要接口API及相关细节

    操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...

  9. C语言的fopen函数(文件操作/读写)

    头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:    FILE * fopen(const char * path, c ...

随机推荐

  1. MJExtension

    MJExtension 长话短说下面我们通过一个列子来看下怎么使用 1. 先把框架拉进去你的项目 2. 首先我这次用到的json最外层是一个字典,根据数据的模型我们可以把这个归类为字典中有数组,数组中 ...

  2. Object的增。删。查。改。遍历

    1.增: 1.向对象添加属性和方法 (私有) --->   obj.属性 ="";  2.向对象原型添加方法 (公共) --->      obj.prototype. ...

  3. DOM缘起

    DOM是现在按W3C标准的浏览器均实现的标准.HTML.CSS.DOM共同在结构.表现.交互上共同支撑起一个页面.当然,必须以用户为中心.平稳退化.逐渐增强.DOM的操作是通过JS来实现的.JS最初在 ...

  4. char str[] 与 char *str的区别详细解析

    char* get_str(void) { char str[] = {"abcd"}; return str; } char str[] = {"abcd"} ...

  5. nginx代理配置

    server {     listen       80;     server_name  api.colortrip.cn;     client_max_body_size 10m;     a ...

  6. UIWebViewでローカルにあるHTMLを表示する&iOS6からtextAlignmentで指定する値が変更になった

    [objective-c]UIWebViewでローカルにあるHTMLを表示する xcode内にHTMLを格納して.そのHTMLをWebViewで表示する方法です. // UIWebViewの初期化UI ...

  7. SAR图像与光学图像区别

    按传感器采用的成像波段分类,光学图像通常是指可见光和部分红外波段传感器获取的影像数据.而SAR传感器基本属于微波频段,波长通常在厘米级.可见光图像通常会包含多个波段的灰度信息,以便于识别目标和分类提取 ...

  8. sketch 跟随鼠标指针移动的特效

    演示地址:http://www.ke01.com/yanshi/sucai/20140830/2/ 下载地址:https://yunpan.cn/cqgWeIYPer8eC  访问密码 672b

  9. 字符串匹配——Brute-Force 简单匹配算法

    下面几篇文章记录字符串匹配算法. Brute-Force算法简称BF算法,中文名叫简单匹配算法.正如其名,简单粗暴,按部就班地遍历所有字符,算法简单,效率低下,不被看好. 但也正因为不常用,反而容易生 ...

  10. python entry points 例子

    pbr的介绍不多,http://ju.outofmemory.cn/entry/156745 $ mkdir entry_test; cd entry_test; git init $ mkdir  ...