+ (NSString *)pathWithComponents
NSArray
*)components
根据components中的元素来构建路径.
- (NSArray *)pathComponents
解析路径,返回构成路径的各个部分.
- (NSString *)lastPathComponent
提取路径中的最后一个组成部分
- (NSString *)pathExtension
从路径中最后一个组成部分中提取扩展名
- (NSString *)stringByAppendingPathCom ponent
NSString
*)path
将path添加到现有路径末尾
- (NSString *)stringByAppendingPathExt ension
NSString
*)ext
将指定的扩展名添加到现有路径的最后一个组成部分上
- (NSString *)stringByDeletingLastPath Component
删除路径中的最后一个组成部分
- (NSString *)stringByDeletingPathExte nsion
从文件的最后一部分删除扩展名
- (NSString *)stringByExpandingTildeIn Path
将路径中的代字符扩展成用户主目录(~)或指定用户的主目录(~user)
- (NSString *)stringByResolvingSymlink sInPath
尝试解析路径中的符号链接
- (NSString *)stringByStandardizingPat h
解析路径中的~,(..)父目录,(.)当前目录和符号链接来标准化路径.
常用的路径工具函数:
NSString * NSUserName (void);
返回当前用户的登录名
NSString * NSFullUserName (void);
返回当前用户的完整用户名
NSString * NSHomeDirectory (void);
返回当前用户主目录的路径
NSString * NSHomeDirectoryForUser ( NSString *userName)
返回用户userName的主目录
NSString * NSTemporaryDirectory (void);
返回可用于创建临时文件的路径目录
NSArray * NSSearchPathForDirectori esInDomains
(
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 *)operatingSystemVersionSt ring
返回操作系统版本
- (void)setProcessName
NSString
*)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 stringByAppendingPathCom ponent:[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.
fileHandleForWritingAtPa th和fileHandleForUpdatingAtP ath方法都是将偏移量设置为文件的开始,所以都是从文件开头写入(或更新模式的读取).在UNIX编程中,打开用于读取的文件不要截断.
常用的NSFileHandle方法:
+ (id)fileHandleForReadingAtPa th
NSString
*)path
打开一个文件准备读取
+ (id)fileHandleForWritingAtPa th
NSString
*)path
打开一个文件准备写入
+ (id)fileHandleForUpdatingAtP ath
NSString
*)path
打开一个文件准备更新(读取和写入)
- (NSData *)availableData
从设备或者通道返回可用的数据
- (NSData *)readDataToEndOfFile
读取其余的数据直到文件的末尾(最大值为无符号整形的最大值)
- (NSData *)readDataOfLength
NSUInteger)length
从文件读取指定字节数的内容
- (void)writeData
NSData
*)data
将data写入文件
- (unsigned long long)offsetInFile
获取当前文件的偏移量
- (void)seekToFileOffset
unsigned
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 fileHandleForReadingAtPa th
"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 fileHandleForWritingAtPa th
"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;
}

根据components中的元素来构建路径.
- (NSArray *)pathComponents
解析路径,返回构成路径的各个部分.
- (NSString *)lastPathComponent
提取路径中的最后一个组成部分
- (NSString *)pathExtension
从路径中最后一个组成部分中提取扩展名
- (NSString *)stringByAppendingPathCom

将path添加到现有路径末尾
- (NSString *)stringByAppendingPathExt

将指定的扩展名添加到现有路径的最后一个组成部分上
- (NSString *)stringByDeletingLastPath
删除路径中的最后一个组成部分
- (NSString *)stringByDeletingPathExte
从文件的最后一部分删除扩展名
- (NSString *)stringByExpandingTildeIn
将路径中的代字符扩展成用户主目录(~)或指定用户的主目录(~user)
- (NSString *)stringByResolvingSymlink
尝试解析路径中的符号链接
- (NSString *)stringByStandardizingPat
解析路径中的~,(..)父目录,(.)当前目录和符号链接来标准化路径.
常用的路径工具函数:
NSString * NSUserName (void);
返回当前用户的登录名
NSString * NSFullUserName (void);
返回当前用户的完整用户名
NSString * NSHomeDirectory (void);
返回当前用户主目录的路径
NSString * NSHomeDirectoryForUser ( NSString *userName)
返回用户userName的主目录
NSString * NSTemporaryDirectory (void);
返回可用于创建临时文件的路径目录
NSArray * NSSearchPathForDirectori
);
用户查找特定的目录,如: NSDocumentationDirectory
复制文件和使用NSProcessInfo类
常用的NSProcessInfo类
+ (NSProcessInfo *)processInfo
返回当前进程信息
- (NSArray *)arguments
以NSString对象数字的形式返回当前进程的参数
- (NSDictionary *)environment
返回变量/值对字典,以描述当前的环境变量(比如PATH等等)
- (int)processIdentifier
返回进程PID
- (NSString *)processName
返回当前正在执行的进程名称
- (NSString *)globallyUniqueString
每次调用该方法时,都会返回不同的单值字符串,可以生成临时文件名
- (NSString *)hostName
返回主机系统名
- (NSUInteger)operatingSystem
返回表示操作系统的数字
- (NSString *)operatingSystemName
返回操作系统的名称
- (NSString *)operatingSystemVersionSt
返回操作系统版本
- (void)setProcessName

修改当前进程名(谨慎使用)
复制命令实现:
#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[]) {
}
基本文件操作类: NSFileHandle
NSFileHandle类没有提供创建文件的方法,所以要创建文件需要使用FileManager方法来创建, NSFileHandle类中的文件操作方法都是假定文件都是存在的,如果不存在,则返回nil.
fileHandleForWritingAtPa
常用的NSFileHandle方法:
+ (id)fileHandleForReadingAtPa

打开一个文件准备读取
+ (id)fileHandleForWritingAtPa

打开一个文件准备写入
+ (id)fileHandleForUpdatingAtP

打开一个文件准备更新(读取和写入)
- (NSData *)availableData
从设备或者通道返回可用的数据
- (NSData *)readDataToEndOfFile
读取其余的数据直到文件的末尾(最大值为无符号整形的最大值)
- (NSData *)readDataOfLength

从文件读取指定字节数的内容
- (void)writeData

将data写入文件
- (unsigned long long)offsetInFile
获取当前文件的偏移量
- (void)seekToFileOffset

设置当前文件的偏移量
- (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[]) {




}