文件管理器
1、判斷文件是否存在
//文件管理單例,負責iOS沙盒中文件的管理
NSFileManager* fileManager = [NSFileManager defaultManager];
//判斷文件或者文件在在某個路徑是否存在,并且它是不是文件夾
BOOL isDir = NO;
//要檢查的路徑:Path。傳入是否是文件夾的bool變量地址
BOOL existed = [fileManagerr fileExistsAtPath:Path isDirectory:&isDir];
2、獲取文件或者文件夾的屬性
NSDictionary* dic = [fileManger attributesOfItemAtPath:Path error:&error];
//返回的字典中可以用的屬性如下:
FOUNDATION_EXPORT NSString * const NSFileType;
FOUNDATION_EXPORT NSString * const NSFileTypeDirectory;
FOUNDATION_EXPORT NSString * const NSFileTypeRegular;
FOUNDATION_EXPORT NSString * const NSFileTypeSymbolicLink;
FOUNDATION_EXPORT NSString * const NSFileTypeSocket;
FOUNDATION_EXPORT NSString * const NSFileTypeCharacterSpecial;
FOUNDATION_EXPORT NSString * const NSFileTypeBlockSpecial;
FOUNDATION_EXPORT NSString * const NSFileTypeUnknown;
FOUNDATION_EXPORT NSString * const NSFileSize;
FOUNDATION_EXPORT NSString * const NSFileModificationDate;
FOUNDATION_EXPORT NSString * const NSFileReferenceCount;
FOUNDATION_EXPORT NSString * const NSFileDeviceIdentifier;
FOUNDATION_EXPORT NSString * const NSFileOwnerAccountName;
FOUNDATION_EXPORT NSString * const NSFileGroupOwnerAccountName;
FOUNDATION_EXPORT NSString * const NSFilePosixPermissions;
FOUNDATION_EXPORT NSString * const NSFileSystemNumber;
FOUNDATION_EXPORT NSString * const NSFileSystemFileNumber;
FOUNDATION_EXPORT NSString * const NSFileExtensionHidden;
FOUNDATION_EXPORT NSString * const NSFileHFSCreatorCode;
FOUNDATION_EXPORT NSString * const NSFileHFSTypeCode;
FOUNDATION_EXPORT NSString * const NSFileImmutable;
FOUNDATION_EXPORT NSString * const NSFileAppendOnly;
FOUNDATION_EXPORT NSString * const NSFileCreationDate;
FOUNDATION_EXPORT NSString * const NSFileOwnerAccountID;
FOUNDATION_EXPORT NSString * const NSFileGroupOwnerAccountID;
FOUNDATION_EXPORT NSString * const NSFileBusy;
FOUNDATION_EXPORT NSString * const NSFileProtectionKey NS_AVAILABLE_IOS(4_0);
FOUNDATION_EXPORT NSString * const NSFileProtectionNone NS_AVAILABLE_IOS(4_0);
FOUNDATION_EXPORT NSString * const NSFileProtectionComplete NS_AVAILABLE_IOS(4_0);
FOUNDATION_EXPORT NSString * const NSFileProtectionCompleteUnlessOpen NS_AVAILABLE_IOS(5_0);
FOUNDATION_EXPORT NSString * const NSFileProtectionCompleteUntilFirstUserAuthentication NS_AVAILABLE_IOS(5_0);
//可以用點語法獲取的屬性如下:
- (unsigned long long)fileSize;
- (NSDate *)fileModificationDate;
- (NSString *)fileType;
- (NSUInteger)filePosixPermissions;
- (NSString *)fileOwnerAccountName;
- (NSString *)fileGroupOwnerAccountName;
- (NSInteger)fileSystemNumber;
- (NSUInteger)fileSystemFileNumber;
- (BOOL)fileExtensionHidden;
- (OSType)fileHFSCreatorCode;
- (OSType)fileHFSTypeCode;
- (BOOL)fileIsImmutable;
- (BOOL)fileIsAppendOnly;
- (NSDate *)fileCreationDate;
- (NSNumber *)fileOwnerAccountID;
- (NSNumber *)fileGroupOwnerAccountID;
3、獲取文件夾中所有文件
//淺度遍歷:返回當前目錄下,所有的一級目錄的文件夾名和文件名
NSString *path=@"/Users/qingmai/Desktop/file";
NSArray *arr1=[fileManager contentsOfDirectoryAtPath:path error:&error];
NSLog(@"%@",arr1);
//深度遍歷:返回當前目錄下所有的子文件夾的名和所有的文件名(注意:二級目錄以下,返回的時候是相對路徑)
NSArray *arr2=[fileManager subpathsOfDirectoryAtPath:path error:&error];
NSLog(@"%@",arr2);
4、創(chuàng)建文件
//創(chuàng)建文件,contents:NSData類型,attributes:設置屬性<NSDictionary>
[fileManager createFileAtPath:path contents:nil attributes:nil];
//創(chuàng)建文件夾
[fileManager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
5、文件或目錄的拷貝
//文件/目錄的拷貝
//將file文件夾里的file2文件夾拷貝到file1里
//注意事項:1.不能有空格;2.目標路徑里必須包含要拷貝或者移動的文件的名字
NSString *fromPath=@"/Users/qingmai/Desktop/file/file2";
NSString *toPath=@"/Users/qingmai/Desktop/file/file1/file2";
[fileManager copyItemAtPath:fromPath toPath:toPath error:&error];
//文件/目錄的移動
//將file文件夾里的wen文件移動到file1文件夾里
NSString *fromPath1=@"/Users/qingmai/Desktop/file/wen.rtf";
NSString *toPath1=@"/Users/qingmai/Desktop/file/file1/wen.rtf";
[fileManager moveItemAtPath:fromPath1 toPath:toPath1 error:nil];
//刪除文件/目錄
[fileManager removeItemAtPath:toPath1 error:nil];
6、文件的操作
//打開文件,讀取文件內(nèi)容,并把內(nèi)容復制到另外一個文件中
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSFileHandle *inFile, *outFile;
NSData *buffer;
//打開讀取文件
inFile = [NSFileHandle fileHandleForReadingAtPath:@"testfile.txt"];
if (!inFile) {
NSLog(@"Open the testfile for reading failed");
return 1;
}else{
NSLog(@"Open the testfile for reading successful");
}
//判斷文件是否已經(jīng)存在,如果沒有就創(chuàng)建
if (![[NSFileManager defaultManager] fileExistsAtPath:@"testfile2.txt"]) {
NSLog(@"testfile2.txt is not existed, and creat it.");
[[NSFileManager defaultManager] createFileAtPath:@"testfile2.txt" contents:nil attributes:nil];
}else{
NSLog(@"testfile2.txt is existed.");
}
//打開文件寫入
outFile = [NSFileHandle fileHandleForWritingAtPath:@"testfile2.txt"];
if (outFile) {
NSLog(@"Open of testout for writing successful");
}else{
NSLog(@"Open of testout for writing failed");
return 2;
}
//截斷輸出文件
[outFile truncateFileAtOffset:0];
//從inFile讀取數(shù)據(jù)到緩存中
buffer = [inFile readDataToEndOfFile];
//從緩存中讀取數(shù)據(jù),寫入outFile
[outFile writeData:buffer];
//關閉兩個文件
[inFile closeFile];
[outFile closeFile];
//驗證文件內(nèi)容
NSLog(@"%@", [NSString stringWithContentsOfFile:@"testfile2.txt" encoding:NSUTF8StringEncoding error:NULL]);
}
return 0;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。