iOS文件管理

文件管理器

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ā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 文件操作 NSFileManager 1.NSFileManager 專門負責文件/文件夾的管理操作,包括創(chuàng)建/刪...
    Jackjun閱讀 2,144評論 0 1
  • iOS開發(fā)-文件管理(一) 一、iOS中的沙盒機制 iOS應用程序只能對自己創(chuàng)建的文件系統(tǒng)讀取文件,這個獨立、封閉...
    MacShare閱讀 1,862評論 0 6
  • 一、iOS中的沙盒機制 iOS應用程序只能對自己創(chuàng)建的文件系統(tǒng)讀取文件,這個獨立、封閉、安全的空間,叫做沙盒。它一...
    tzhtodd閱讀 1,343評論 0 2
  • 一、iOS中的沙盒機制 iOS應用程序只能對自己創(chuàng)建的文件系統(tǒng)讀取文件,這個獨立、封閉、安全的空間,叫做沙盒。它一...
    絢雨藍了個楓閱讀 4,316評論 0 2
  • 一、iOS中的沙盒機制 ?iOS應用程序只能對自己創(chuàng)建的文件系統(tǒng)讀取文件,這個獨立、封閉、安全的空間,叫做沙盒。它...
    舒城8中閱讀 2,516評論 0 6

友情鏈接更多精彩內(nèi)容