IOS文件路径处理方法
2012-08-27 08:07
344 查看
常见路径处理方法:
+ (NSString *)pathWithComponentsNSArray *)components
根据components中的元素来构建路径.
- (NSArray *)pathComponents
解析路径,返回构成路径的各个部分.
- (NSString *)lastPathComponent
提取路径中的最后一个组成部分
- (NSString *)pathExtension
从路径中最后一个组成部分中提取扩展名
- (NSString *)stringByAppendingPathComponentNSString *)path
将path添加到现有路径末尾
- (NSString *)stringByAppendingPathExtensionNSString *)ext
将指定的扩展名添加到现有路径的最后一个组成部分上
- (NSString *)stringByDeletingLastPathComponent
删除路径中的最后一个组成部分
- (NSString *)stringByDeletingPathExtension
从文件的最后一部分删除扩展名
- (NSString *)stringByExpandingTildeInPath
将路径中的代字符扩展成用户主目录(~)或指定用户的主目录(~user)
- (NSString *)stringByResolvingSymlinksInPath
尝试解析路径中的符号链接
- (NSString *)stringByStandardizingPath
解析路径中的~,(..)父目录,(.)当前目录和符号链接来标准化路径.
常用的路径工具函数:
NSString * NSUserName (void);
返回当前用户的登录名
NSString * NSFullUserName (void);
返回当前用户的完整用户名
NSString * NSHomeDirectory (void);
返回当前用户主目录的路径
NSString * NSHomeDirectoryForUser ( NSString *userName)
返回用户userName的主目录
NSString * NSTemporaryDirectory (void);
返回可用于创建临时文件的路径目录
NSArray * NSSearchPathForDirectoriesInDomains (
NSSearchPathDirectory directory,
NSSearchPathDomainMask domainMask,
BOOL expandTilde
);
用户查找特定的目录,如: NSDocumentationDirectory, NSUserDirectory等等
复制文件和使用NSProcessInfo类
常用的NSProcessInfo类方法:
+ (NSProcessInfo *)processInfo
返回当前进程信息
- (NSArray *)arguments
以NSString对象数字的形式返回当前进程的参数
- (NSDictionary *)environment
返回变量/值对字典,以描述当前的环境变量(比如PATH等等)
- (int)processIdentifier
返回进程PID
- (NSString *)processName
返回当前正在执行的进程名称
- (NSString *)globallyUniqueString
每次调用该方法时,都会返回不同的单值字符串,可以生成临时文件名
- (NSString *)hostName
返回主机系统名
- (NSUInteger)operatingSystem
返回表示操作系统的数字
- (NSString *)operatingSystemName
返回操作系统的名称
- (NSString *)operatingSystemVersionString
返回操作系统版本
- (void)setProcessNameNSString *)name
修改当前进程名(谨慎使用)
复制命令实现:
基本文件操作类: NSFileHandle:
NSFileHandle类没有提供创建文件的方法,所以要创建文件需要使用FileManager方法来创建, NSFileHandle类中的文件操作方法都是假定文件都是存在的,如果不存在,则返回nil.
fileHandleForWritingAtPath和fileHandleForUpdatingAtPath方法都是将偏移量设置为文件的开始,所以都是从文件开头写入(或更新模式的读取).在UNIX编程中,打开用于读取的文件不要截断.
常用的NSFileHandle方法:
+ (id)fileHandleForReadingAtPathNSString *)path
打开一个文件准备读取
+ (id)fileHandleForWritingAtPathNSString *)path
打开一个文件准备写入
+ (id)fileHandleForUpdatingAtPathNSString *)path
打开一个文件准备更新(读取和写入)
- (NSData *)availableData
从设备或者通道返回可用的数据
- (NSData *)readDataToEndOfFile
读取其余的数据直到文件的末尾(最大值为无符号整形的最大值)
- (NSData *)readDataOfLengthNSUInteger)length
从文件读取指定字节数的内容
- (void)writeDataNSData *)data
将data写入文件
- (unsigned long long)offsetInFile
获取当前文件的偏移量
- (void)seekToFileOffsetunsigned long long)offset
设置当前文件的偏移量
- (unsigned long long)seekToEndOfFile
将当前文件的偏移量定位到文件的末尾
- (void)truncateFileAtOffset:(unsigned long long)offset
将文件的长度设置为offset字节(如需要,可填充内容)
- (void)closeFile
关闭文件
示例代码:
+ (NSString *)pathWithComponentsNSArray *)components
根据components中的元素来构建路径.
- (NSArray *)pathComponents
解析路径,返回构成路径的各个部分.
- (NSString *)lastPathComponent
提取路径中的最后一个组成部分
- (NSString *)pathExtension
从路径中最后一个组成部分中提取扩展名
- (NSString *)stringByAppendingPathComponentNSString *)path
将path添加到现有路径末尾
- (NSString *)stringByAppendingPathExtensionNSString *)ext
将指定的扩展名添加到现有路径的最后一个组成部分上
- (NSString *)stringByDeletingLastPathComponent
删除路径中的最后一个组成部分
- (NSString *)stringByDeletingPathExtension
从文件的最后一部分删除扩展名
- (NSString *)stringByExpandingTildeInPath
将路径中的代字符扩展成用户主目录(~)或指定用户的主目录(~user)
- (NSString *)stringByResolvingSymlinksInPath
尝试解析路径中的符号链接
- (NSString *)stringByStandardizingPath
解析路径中的~,(..)父目录,(.)当前目录和符号链接来标准化路径.
常用的路径工具函数:
NSString * NSUserName (void);
返回当前用户的登录名
NSString * NSFullUserName (void);
返回当前用户的完整用户名
NSString * NSHomeDirectory (void);
返回当前用户主目录的路径
NSString * NSHomeDirectoryForUser ( NSString *userName)
返回用户userName的主目录
NSString * NSTemporaryDirectory (void);
返回可用于创建临时文件的路径目录
NSArray * NSSearchPathForDirectoriesInDomains (
NSSearchPathDirectory directory,
NSSearchPathDomainMask domainMask,
BOOL expandTilde
);
用户查找特定的目录,如: NSDocumentationDirectory, NSUserDirectory等等
复制文件和使用NSProcessInfo类
常用的NSProcessInfo类方法:
+ (NSProcessInfo *)processInfo
返回当前进程信息
- (NSArray *)arguments
以NSString对象数字的形式返回当前进程的参数
- (NSDictionary *)environment
返回变量/值对字典,以描述当前的环境变量(比如PATH等等)
- (int)processIdentifier
返回进程PID
- (NSString *)processName
返回当前正在执行的进程名称
- (NSString *)globallyUniqueString
每次调用该方法时,都会返回不同的单值字符串,可以生成临时文件名
- (NSString *)hostName
返回主机系统名
- (NSUInteger)operatingSystem
返回表示操作系统的数字
- (NSString *)operatingSystemName
返回操作系统的名称
- (NSString *)operatingSystemVersionString
返回操作系统版本
- (void)setProcessNameNSString *)name
修改当前进程名(谨慎使用)
复制命令实现:
#import <Foundation/NSObject.h> #import <Foundation/NSAutoreleasePool.h> #import <Foundation/NSString.h> #import <Foundation/NSFileManager.h> #import <Foundation/NSArray.h> #import <Foundation/NSPathUtilities.h> #import <Foundation/NSProcessInfo.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSFileManager *fm; NSString *source, *dest; BOOL isDir; NSProcessInfo *proc = [NSProcessInfo processInfo]; //返回当前进程信息. NSArray *args = [proc arguments]; //arguments方法返回一个数组,第一个元素是进程名称,其余的是命令行参数. fm = [[NSFileManager alloc]init]; if ([args count] != 3) { NSLog(@"Usage: %@ src dest", [proc processName]); return 1; } //测试命令行中的元素是否有3个,如果不是,打印信息,processName方法获取当前进程名. source = [args objectAtIndex:1]; dest = [args objectAtIndex:2]; //提取返回的数组中的元素,第1个返回给source,第2个返回给dest. if ([fm isReadableFileAtPath:source] == NO) { NSLog(!"Can't read %@", source); return 2; } //测试源文件是否可读 [fm fileExistsAtPath:dest isDirectory: &isDir]; //测试目标文件是不是目录,将YES/NO存入变量isDir. if (isDir == YES) dest = [dest stringByAppendingPathComponent:[source lastPathComponent]]; //如果目标是目录,则在目标路径末尾添加源文件名. [fm removeItemAtPath:dest error:NULL]; //copyItemAtPath:toPath:error:方法不允许重写文件,所以删除原有文件. if ([fm copyItemAtPath:source toPath:dest error:NULL] == NO) { NSLog(@"copy failed~"); return 3; } //如果复制不成功,返回错误信息. NSLog(@"copy of %@ to %@ succeeded~ ", source, dest); [pool drain]; return 0; }
基本文件操作类: NSFileHandle:
NSFileHandle类没有提供创建文件的方法,所以要创建文件需要使用FileManager方法来创建, NSFileHandle类中的文件操作方法都是假定文件都是存在的,如果不存在,则返回nil.
fileHandleForWritingAtPath和fileHandleForUpdatingAtPath方法都是将偏移量设置为文件的开始,所以都是从文件开头写入(或更新模式的读取).在UNIX编程中,打开用于读取的文件不要截断.
常用的NSFileHandle方法:
+ (id)fileHandleForReadingAtPathNSString *)path
打开一个文件准备读取
+ (id)fileHandleForWritingAtPathNSString *)path
打开一个文件准备写入
+ (id)fileHandleForUpdatingAtPathNSString *)path
打开一个文件准备更新(读取和写入)
- (NSData *)availableData
从设备或者通道返回可用的数据
- (NSData *)readDataToEndOfFile
读取其余的数据直到文件的末尾(最大值为无符号整形的最大值)
- (NSData *)readDataOfLengthNSUInteger)length
从文件读取指定字节数的内容
- (void)writeDataNSData *)data
将data写入文件
- (unsigned long long)offsetInFile
获取当前文件的偏移量
- (void)seekToFileOffsetunsigned long long)offset
设置当前文件的偏移量
- (unsigned long long)seekToEndOfFile
将当前文件的偏移量定位到文件的末尾
- (void)truncateFileAtOffset:(unsigned long long)offset
将文件的长度设置为offset字节(如需要,可填充内容)
- (void)closeFile
关闭文件
示例代码:
#import <Foundation/NSObject.h> #import <Foundation/NSAutoreleasePool.h> #import <Foundation/NSString.h> #import <Foundation/NSFileManager.h> #import <Foundation/NSData.h> #import <Foundation/NSFileHandle.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSFileHandle *infile, *outfile; NSData *buffer; infile = [NSFileHandle fileHandleForReadingAtPath"testfile"]; //测试testfile文件是否可读 if (infile == nil) { NSLog(@"no read"); return 1; } //如果不可读,打印... [infile seekToFileOffset:12]; //截取第12个字符之后的内容. [[[NSFileManager alloc]init]createFileAtPath"testout" contents:nil attributes:nil]; //使用NSFileManager类创建文件testout,用于接受复制. outfile = [NSFileHandle fileHandleForWritingAtPath"testout"]; //测试testout文件是否可写 if (outfile == nil) { NSLog(@"no writing"); return 2; } //如果不可写,打印 [outfile truncateFileAtOffset:0]; //将文件长度设置为0 buffer = [infile readDataToEndOfFile]; //读取infile文件中的数据保存进buffer. [outfile writeData:buffer]; //将buffer的内容写入testout文件 [infile closeFile]; [outfile closeFile]; //关闭文件 NSLog(@"%@",[NSString stringWithContentsOfFile"testout" encoding:NSUTF8StringEncoding error:nil]); //打印testout文件内容 [pool drain]; return 0; }
相关文章推荐
- IOS文件路径处理方法
- IOS文件路径处理方法:
- IOS文件路径处理方法:
- IOS文件路径处理方法
- IOS文件路径处理方法
- IOS文件路径处理方法:
- iOS 获取文件的目录路径的几种方法
- iOS开发之--svn工具Cornerstone上传忽略.a文件的处理方法
- IOS中获取各种文件的目录路径的方法
- IOS中获取各种文件的目录路径的方法
- IOS中获取各个文件的目录路径的方法和NSFileManager类
- IOS中获取各个文件的目录路径的方法和NSFileManager类
- Java 多文件上传存储到不同的路径及某上传框中未选择上传文件的处理方法
- 关于删除文件时提示“找不到路径,无法删除”的处理方法
- iOS文件路径操作与资源导入方法
- IOS中获取各种文件的目录路径的方法
- 无法在此路径使用此配置节。当站点管理员使用继承的配置文件中的 <location allowOverride="false"> 错误处理方法!
- IOS 文件路径字符串处理
- php文件之间相互引用路径问题的一般处理方法
- IOS中获取各个文件的目录路径的方法和NSFileManager类