iOS開發學無止境 - NSFileManager文件操作的十個小功能

?

(配圖的小故事還記得嘛)

?

?

NSFileManager是一個單列類,也是一個文件管理器。可以通過NSFileManager創建文件夾、創建文件、寫文件、讀文件內容等等基本功能。

下面將介紹NSFileManager文件操作的十個小功能。我們在Documents里面進行舉例,首先是獲取Documents的路徑。這個在iOS開發之沙盒機制(SandBox)已經詳細講解過了。獲取Documents路徑方法如下:

- (NSString *)getDocumentsPath
{//獲取Documents路徑NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *path = [paths objectAtIndex:0];NSLog(@"path:%@", path);return path;
}

創建文件夾

-(void)createDirectory{NSString *documentsPath =[self getDocumentsPath];NSFileManager *fileManager = [NSFileManager defaultManager];NSString *iOSDirectory = [documentsPath stringByAppendingPathComponent:@"iOS"];BOOL isSuccess = [fileManager createDirectoryAtPath:iOSDirectory withIntermediateDirectories:YES attributes:nil error:nil];if (isSuccess) {NSLog(@"success");} else {NSLog(@"fail");}
}

創建文件

-(void)createFile{NSString *documentsPath =[self getDocumentsPath];NSFileManager *fileManager = [NSFileManager defaultManager];NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];BOOL isSuccess = [fileManager createFileAtPath:iOSPath contents:nil attributes:nil];if (isSuccess) {NSLog(@"success");} else {NSLog(@"fail");}
}

寫文件

-(void)writeFile{NSString *documentsPath =[self getDocumentsPath];NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];NSString *content = @"我要寫數據啦";BOOL isSuccess = [content writeToFile:iOSPath atomically:YES encoding:NSUTF8StringEncoding error:nil];if (isSuccess) {NSLog(@"write success");} else {NSLog(@"write fail");}
}

讀取文件內容

-(void)readFileContent{NSString *documentsPath =[self getDocumentsPath];NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];NSString *content = [NSString stringWithContentsOfFile:iOSPath encoding:NSUTF8StringEncoding error:nil];NSLog(@"read success: %@",content);
}

判斷文件是否存在

- (BOOL)isSxistAtPath:(NSString *)filePath{NSFileManager *fileManager = [NSFileManager defaultManager];BOOL isExist = [fileManager fileExistsAtPath:filePath];return isExist;
}

計算文件大小

- (unsigned long long)fileSizeAtPath:(NSString *)filePath{NSFileManager *fileManager = [NSFileManager defaultManager];BOOL isExist = [fileManager fileExistsAtPath:filePath];if (isExist){unsigned long long fileSize = [[fileManager attributesOfItemAtPath:filePath error:nil] fileSize];return fileSize;} else {NSLog(@"file is not exist");return 0;}
}

計算整個文件夾中所有文件大小

- (unsigned long long)folderSizeAtPath:(NSString*)folderPath{NSFileManager *fileManager = [NSFileManager defaultManager];BOOL isExist = [fileManager fileExistsAtPath:folderPath];if (isExist){NSEnumerator *childFileEnumerator = [[fileManager subpathsAtPath:folderPath] objectEnumerator];unsigned long long folderSize = 0;NSString *fileName = @"";while ((fileName = [childFileEnumerator nextObject]) != nil){NSString* fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];folderSize += [self fileSizeAtPath:fileAbsolutePath];}return folderSize / (1024.0 * 1024.0);} else {NSLog(@"file is not exist");return 0;}
}

刪除文件

-(void)deleteFile{NSString *documentsPath =[self getDocumentsPath];NSFileManager *fileManager = [NSFileManager defaultManager];NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];BOOL isSuccess = [fileManager removeItemAtPath:iOSPath error:nil];if (isSuccess) {NSLog(@"delete success");}else{NSLog(@"delete fail");}
}

移動文件

- (void)moveFileName
{NSString *documentsPath =[self getDocumentsPath];NSFileManager *fileManager = [NSFileManager defaultManager];NSString *filePath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];NSString *moveToPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];BOOL isSuccess = [fileManager moveItemAtPath:filePath toPath:moveToPath error:nil];if (isSuccess) {NSLog(@"rename success");}else{NSLog(@"rename fail");}
}

重命名

- (void)renameFileName
{//通過移動該文件對文件重命名NSString *documentsPath =[self getDocumentsPath];NSFileManager *fileManager = [NSFileManager defaultManager];NSString *filePath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];NSString *moveToPath = [documentsPath stringByAppendingPathComponent:@"rename.txt"];BOOL isSuccess = [fileManager moveItemAtPath:filePath toPath:moveToPath error:nil];if (isSuccess) {NSLog(@"rename success");}else{NSLog(@"rename fail");}
}

以上文件操作代碼都在iOSStrongDemo,可以直接通過git拉下來進行測試。關于NSFileManager的用法還有很多,一起接續探索吧!

轉載于:https://www.cnblogs.com/xvewuzhijing/p/5003862.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397171.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397171.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397171.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

smokeping自動檢測系統

如何的使用smokeping來監控idc機房的網絡質量情況,從監控圖上的延時與丟包能分辨出你機房的網絡是否穩定,是否為多線,是否為BGP機房,到各城市的3個運行商網絡各是什么情況,如果出現問題,如果有針對的解決。…

ElasticSearch聚合分析

聚合用于分析查詢結果集的統計指標,我們以觀看日志分析為例,介紹各種常用的ElasticSearch聚合操作。 目錄: 查詢用戶觀看視頻數和觀看時長聚合分頁器查詢視頻uv 單個視頻uv批量查詢視頻uvHaving查詢 根據 count 進行過濾根據其它指標進行過濾…

bg感_【0328】BG推文 | 5本我在逃生游戲里養娃娃+歲月繾綣已無你+關于我比女主蘇這回事+消失的白月光又回來了等...

大家多多支持原文!以下內容多為網絡搜集,非商業用途。版權歸原作者所有,侵聯!BG文《我在逃生游戲里養娃娃》作者:鶴舫閑人《歲月繾綣已無你》作者:酒爺《關于我比女主蘇這回事》作者:歡何極《消…

android 屏幕最小寬度_AndroidTV屏幕適配-smallestWidth(最小寬度) 限定符

背景前幾天接到一個需求,把項目上的原來的2k屏幕適配到4k屏幕。我采用的是smallestWidth最小寬度限定符進行適配的我們項目的。1,smallestWidth 限定符適配原理系統都是根據限定符去尋找對應的 dimens.xml 文件。例如在最小寬度為 720dp 的設備上&#x…

mysql 組合索引

MySQL單列索引是我們使用MySQL數據庫中經常會見到的,MySQL單列索引和組合索引的區別可能有很多人還不是十分的了解,下面就為您分析兩者的主要區別,供您參考學習。 為了形象地對比兩者,再建一個表: CREATE TABLE myInde…

cmake使用總結(轉)---工程主目錄CMakeList文件編寫

在linux 下進行開發很多人選擇編寫makefile 文件進行項目環境搭建,而makefile 文件依賴關系復雜,工作量很大,搞的人頭很大。采用自動化的項目構建工具cmake 可以將程序員從復雜的makefile 文件中解脫出來。cmake 根據內置的規則和語法來自動生…

微信開發者工具 wxmi修改模版顏色_十款高效好用的在線網頁工具,提升你的辦公效率...

大家好, 我是阿毛,今天給大家推薦高效辦公的10個在線網頁工具,可以不用下載安裝很多app,也不用在電腦上裝很多軟件。在線制作精彩視頻操作非常簡單,選擇模板,上傳照片然后點擊制作等待完成就可以了&#xf…

三星ml1660拆機圖解_三星s6拆機圖解介紹

三星s6拆機圖解介紹三星s6怎么拆機?不管你是手機維修者還是狂熱的手機玩家,相信對您手中的三星s6內部構造和組裝步驟應該都是非常有興趣的吧?今天綠茶通過Fixit發布的三星s6拆機教程來和大家一起分享一下三星s6拆機步驟,從三星s6的內部構造一起來了解一…

Ajax請求利用jsonp實現跨域

跨域: js有一個同源限制,簡單說來源不一樣的話就無法相互間交互.那么怎么算來源不一樣呢, 舉個例子:瀏覽器訪問-->服務器A--->得到頁面A---頁面A中的js腳本只能訪問服務器A的資源(相同域名和端口,此外域名與對應的ip也算不同源,要么都域名,要么都ip). 以上就是js的跨域問…

[轉]使用Navicat for Oracle工具連接oracle的

使用Navicat for Oracle工具連接oracle的 這是一款oracle的客戶端的圖形化管理和開發工具,對于許多的數據庫都有支持。之前用過 Navicat for sqlserver,感覺很好用,所以下載了Oracle版的用。上網查看了一下這個工具可以用于任何版本 8i 或以上的 Oracle …

微信小程序基于第三方插件微信同聲傳譯,以及一些問題解決辦法

使用之前首先得在微信微信小程序后臺添加插件,獲取插件的appid 名稱 使用時在app.json文件添加插件配置 1 plugins: { 2 WechatSI: { 3 version: 0.1.0, 4 provider: wx069ba97219f66d99 5 } 6 } 其次就是在使用的頁面進行調用 在index.js外…

TF卡里刪掉文件后內存沒變大_內存卡損壞怎么修復?數據恢復方法教程

內存卡損壞怎么修復?內存卡又叫SD卡,是一種很輕便小巧的便攜存儲裝置,往往內置于各種便攜媒體設備內部。內存卡本身具有堅固、抗沖擊等外部特性和讀寫快、空間大等內部特性,但是內存卡因為每天都要讀寫大量數據很容易從內部發生損…

apollo持久化sentinel_Spring Cloud Alibaba基礎教程:Sentinel使用Apollo存儲規則

上一篇我們介紹了如何通過Nacos的配置功能來存儲限流規則。Apollo是國內用戶非常多的配置中心,所以,今天我們繼續說說Spring Cloud Alibaba Sentinel中如何將流控規則存儲在Apollo中。使用Apollo存儲限流規則Sentinel自身就支持了多種不同的數據源來持久…

Lintcode: Unique Paths

C dp 遞推式&#xff1a;dp[i][j] dp[i-1][j] dp[i][j-1] 初值&#xff1a;dp[i][j] 1&#xff0c;i0 or j0 空間優化&#xff1a;省掉一維 1 class Solution {2 public:3 /**4 * param n, m: positive integer (1 < n ,m < 100)5 * return an integer6…

idea 如何隱藏/展示不想看到的文件

隱藏&#xff1a;在 Ignore files and folders中添加想要過濾的文件或文件夾名稱 展示隱藏文件&#xff1a; 在過濾列表中刪除掉文件或者文件夾就好了 轉載于:https://www.cnblogs.com/mengjianzhou/p/6177897.html

BZOJ2286: [Sdoi2011]消耗戰(虛樹)

BZOJ2286: [Sdoi2011]消耗戰 Time Limit: 20 Sec   Memory Limit: 512 MB Description 在一場戰爭中&#xff0c;戰場由n個島嶼和n-1個橋梁組成&#xff0c;保證每兩個島嶼間有且僅有一條路徑可達。現在&#xff0c;我軍已經偵查到敵軍的總部在編號為1的島嶼&#xff0c;而且…

Java基礎知識:Java實現Map集合二級聯動4

comboBox.setModel(new DefaultComboBoxModel(getProvince())); // 添加省份信息 final JLabel label new JLabel(); label.setText("省/直轄市"); label.setBounds(155, 30, 66, 18); panel.add(label); final JLabel label_1 new JLabel(); label_1.setText(&quo…

linux QT 結束當前進程_Qt編寫控件屬性設計器7-串口采集

一、前言數據源是組態軟件的核心靈魂&#xff0c;少了數據源&#xff0c;組態就是個花架子沒卵用&#xff0c;一般數據源有三種方式獲取&#xff0c;串口、網絡、數據庫&#xff0c;至于數據規則是什么&#xff0c;這個用戶自己指定&#xff0c;本設計器全部采用第一個字節作為…

magento2郵件調試方法

order mail 直接打印到頁面上 位置 vendor\magento\module-sales\Model\Order\Email\Sender.php Magento\Sales\Model\Order\Email\Sender::prepareTemplate() 添加代碼 $objectManager \Magento\Framework\App\ObjectManager::getInstance(); $templateFactory $objectManag…

python多進程怎么樣_Python執行多進程任務的方法

Python的多進程可以借助from multiprocessing import Pool來實現。簡而言之分為這樣幾步&#xff1a;導入包from multiprocessing import Pool編寫任務函數。def 任務函數(參數)實例化進程池并設置進程數。poolPool(欲設置的進程數)開始布置任務&#xff0c;把多個任務添加進多…