objective-C NSFileManager的方法(文件操作)

#import <Foundation/Foundation.h>

#define PATH @"/Users/huzhiping/Desktop/Code"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // NSFileManager 是一個專門用來管理文件和文件夾的類,通過一系列的對象方法
        //1.創(chuàng)建一個NSFileMananer對象(單例對象)
        //系統(tǒng)提供的單例方法,一般是以default開頭
        NSFileManager *manager = [NSFileManager defaultManager];
            
        //2. 淺度遍歷
        //?作用:返回當(dāng)前文件夾下的所有的文件和文件夾(不包含子目錄)
        // 參數(shù)1:文件夾的路徑(絕對路徑)
        // 參數(shù)2:錯誤信息(NSError 是OC中專門用來存儲錯誤信息的類,一般不要程序員給他賦值)
        // 如果遍歷成功了這個NSError的是空,否則NSError的值就不為空,存儲錯誤信息。

        NSError *error;
        NSArray *array1 = [manager contentsOfDirectoryAtPath:PATH error:&error];
        // 判斷遍歷是否成功
        if (!error) {
            NSLog(@"遍歷成功");
            NSLog(@"%@", array1);
        } else {
            NSLog(@"遍歷失敗");
            NSLog(@"%@", error);
        }
             
        
        //3. 深度遍歷
        //?作用:遍歷出當(dāng)前文件夾下的所有的文件和文件夾的名字
        // 包含子目錄的相對路徑名和子目錄下的文件)
        // 參數(shù)1:文件夾的路徑(絕對路徑)
        // 參數(shù)2:錯誤信息(NSError 是OC中專門用來存儲錯誤信息的類,一般不要程序員給他賦值)
        // 如果遍歷成功了這個NSError的是空,否則NSError的值就不為空,存儲錯誤信息。

        error = nil;
        NSArray *array2 = [manager subpathsOfDirectoryAtPath:PATH error:&error];
        if (!error) {
            NSLog(@"遍歷成功");
            NSLog(@"%@", array2);
        } else {
            NSLog(@"遍歷失敗");
            NSLog(@"%@", error);
        }
                
        //4.創(chuàng)建文件夾
        // 作用:在制動的路徑下創(chuàng)建一個文件夾
        //?參數(shù)1:路徑(不能只是包含需要創(chuàng)建文件夾的路徑,還需要包含需要創(chuàng)建的文件夾的名字)      
        // 就是假設(shè)已經(jīng)創(chuàng)建好的文件夾的路徑
        // 參數(shù)2:是否創(chuàng)建中間目錄 推薦傳入YES
        // 參數(shù)3:文件夾屬性,傳入nil表示默認(rèn)屬性
        // attributes 屬性
        // 參數(shù)4: 錯誤信息
        // 返回值是一個布爾值 是否創(chuàng)建成功
        
        // 拼接路徑
        NSString *newPath = [NSString stringWithFormat:@"%@/c", PATH];
        BOOL ret = [manager createDirectoryAtPath:newPath withIntermediateDirectories:YES attributes:nil error:nil];
        if (ret) {
            NSLog(@"創(chuàng)建文件夾成功");
        } else {
            NSLog(@"創(chuàng)建文件夾失敗");
   
        }
        
        // 5.創(chuàng)建文件
        //?參數(shù)1:路徑,你要創(chuàng)建的文件創(chuàng)建好的時候的路徑
        // 參數(shù)2:文件內(nèi)容(二進制形式)
        //將數(shù)據(jù)存到文件中或者從文件中取出數(shù)據(jù),這個數(shù)據(jù)類型都是二進制形式的)
        // 參數(shù)3:文件屬性
        // 返回值是布爾值: 是否創(chuàng)建成功
        
        // 專門用來拼接路徑的方法
        NSString *newPath2 = [PATH stringByAppendingPathComponent:@"file.txt"];
        
        //創(chuàng)建內(nèi)容字符串
        NSString *content = @"Hello, world!";
        // 將字符串轉(zhuǎn)換成NSData 這是字符串對象的方法
        NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding];
        // 創(chuàng)建文件
        BOOL ret2 = [manager createFileAtPath:newPath2 contents:data attributes:nil];
        ret2 ? NSLog(@"文件創(chuàng)建成功"):NSLog(@"文件創(chuàng)建失敗");
        
        
        // 6.刪除文件或者文件夾
        // 參數(shù)1:要刪除的文件或者文件夾的路徑
        // 參數(shù)2:錯誤信息
        // 返回值布爾值: 是否刪除成功
        BOOL ret3 = [manager removeItemAtPath:[PATH stringByAppendingPathComponent:@"c"] error:nil];
        ret3 ? NSLog(@"文件夾刪除成功"):NSLog(@"文件夾刪除失敗");
        
        
        
        // 7.判斷文件或者文件夾是否存在
        // 參數(shù)1:文件或者文件夾的路徑
        // 返回值布爾值: 是否存在
        bool ret4 = [manager fileExistsAtPath:[PATH stringByAppendingPathComponent:@"file.txt"]];
        ret4 ? NSLog(@"存在"):NSLog(@"不存在");
        
        // 8.判斷文件或者文件夾是否存在并且判斷是否是文件夾
        // 參數(shù)1:文件或者文件夾的路徑
        // 參數(shù)2:用來存儲是否是文件夾的結(jié)果,如果是文件夾那么這個參數(shù)的指向的變量值會變成YES,否則是NO.
        // 返回值布爾值: 是否存在
        BOOL ret6 = NO;
        BOOL ret5 = [manager fileExistsAtPath:[PATH stringByAppendingPathComponent:@"file.txt"] isDirectory:&ret6];
        if (ret5) {
            NSLog(@"存在");
            if (ret6) {
                NSLog(@"是文件夾");
            } else {
                NSLog(@"不是文件夾");
            }
        } else {
             NSLog(@"不存在");
        }
        
        
        // 9.獲取文件或者文件夾的屬性
        // 參數(shù)1:路徑
        // 參數(shù)2:錯誤信息
        // 返回值是字典
        NSDictionary *dict = [manager attributesOfItemAtPath:PATH error:nil];
        
        NSLog(@"%@", dict);
        
        
        // 10.拷貝文件或者文件夾
        // 參數(shù)1:文件或者文件夾的原始路徑
        //?參數(shù)2:文件或者文件夾的目標(biāo)路徑 (注意:一定要拼接出拷貝完后,文件或者文件夾的路徑)
        // 參數(shù)3:錯誤信息
        // 返回值是否拷貝成功
        BOOL ret7 = [manager copyItemAtPath:[PATH stringByAppendingPathComponent:@"file.txt"] toPath:[PATH stringByAppendingPathComponent:@"m/file.txt"] error:nil];
        ret7 ? NSLog(@"拷貝成功"):NSLog(@"拷貝失敗");
        
        // 11.文件或者文件夾的移動
        // 參數(shù)1:文件或者文件夾的原始路徑
        // 參數(shù)2:文件或者文件夾的目標(biāo)路徑 (注意:一定要拼接出拷貝完后,文件或者文件夾的路徑)
        // 參數(shù)3:錯誤信息
        // 返回值是否移動成功
        
        bool ret8 = [manager moveItemAtPath:[PATH stringByAppendingPathComponent:@"n"] toPath:[PATH stringByAppendingPathComponent:@"m/n"] error:nil];
        ret8 ? NSLog(@"移動成功"):NSLog(@"移動失敗");
    }
    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ā)布平臺,僅提供信息存儲服務(wù)。

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

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