當前位置:首頁 » 文件管理 » ios沙盒文件夾

ios沙盒文件夾

發布時間: 2023-04-19 16:56:33

A. iOS 每次重新運行 App,保存文件的沙盒路徑失效

項汪桐目中有錄音,保存到沙盒中,但是每次重啟 App 或者重新安裝 App 後,路困胡坦徑失效,按做春照上次的路徑不能夠找到錄音文件

按照路徑找不到錄音文件,那就是路徑和文件沒有對應。列印路徑文件存放路徑,發現每次重啟後路徑都不一樣。
經過調研發現,iOS 系統每次重啟 app,沙盒的路徑都會變化,生成新的一個路徑,原路徑文件夾內容被替換至新路徑下

取 path 最後一個「/」後面的部分,與前面組合成為新的 path,即為文件的正確路徑

B. iOS 沙盒內的目錄結構和作用

沙盒目錄下有三個文件夾:Documents、Library、temp以及一個.app包!該目錄下就是應用程序的沙盒,應用程序只能訪問該目錄下的文件夾!!!

1、Documents 目錄:您應該將所有的應用程序數據文件寫入到這個目錄下。這個目錄用於存儲用戶數據。該路徑可通過配置實現iTunes共享文件。可被iTunes備份。

2、AppName.app 目錄:這是應用程序的程序包目錄,包含應用程序的本身。由於應用程序必須經過簽名,所以您在運行時不能對這個目錄中的內容進行修改,否則可能會使應用程序無法啟動。

3、Library 目錄:這個目錄下有兩個子目錄:
Preferences 目錄:包含應用程序的偏好設置文件。您不應該直接創建偏好設置文件,而是應該使用NSUserDefaults類來取得和設置應納敏用程序的偏好.
Caches 目錄:用於存放應用程序專用的支持文件,保存應用程序再次啟動過程中需要的信息。
可創建子文件夾。可以用來放置您希望被備份但不希望被用戶看到的數據。該路徑下搭銷的文件夾,除Caches以外,都會被iTunes備份。

4、tmp 目錄:這個目錄用於存放臨時文件,保存應用知茄遊程序再次啟動過程中不需要的信息。該路徑下的文件不會被iTunes備份。

C. iOS 本地寫入、存儲數據,沙盒機制

iphone沙盒中有4個文件夾,documents、tmp、app、library。

(1)、定位Document 目錄

(2)、定位Library 目錄

(3)、定爛磨尺位Caches 目錄,游並Caches 目錄位於Library目錄下

使用只能定位Caches、Library、Documents目錄, tmp目錄,不能按照此方法獲得,此時可以採用NSHomeDirectory定位到應用程序主目錄,也就是Document 的上飢高一層目錄:
NSString *temp = NSTemporaryDirectory();

獲取沙盒根目錄:NSHomeDirectory()
使用NSHomeDirectory()可以獲取到沙盒的根目錄,也就是Document的上一層。
利用NSHomeDirectory()我們可以獲取沙盒中的任意文件的路徑。
例如:獲取tmp的路徑如下所示:

如果創建文件夾,並創建子目錄,如下:

關於目錄/文件的其他操作:

D. ios監管模式存儲路徑

不管是在iOS還是Android開發過程中,我們都經常性地需要存儲一些狀態和數據,比如用戶對於App的相關設置、需要在態信橡本地緩存的數據等等。根據要存儲的的數據的大小、存儲性質以及存儲類型,在iOS和Android中哪個都有多種存儲方式。其中,iOS中的存儲方式主要包括以下六類:

plist文件(屬性列表)
preference(偏好設置帆旁)
NSKeyedArchiver(歸檔)
SQLite 3
CoreData
手動存放沙盒
一、沙盒機制
在研究存儲方式之前,我們有必要先研究下這些文件會存儲到什麼地方去,這就需要我們了解iOS App特有的沙盒機制了。iOS程序默認情況下只能訪問程序自己的目錄,這個目錄被稱為「沙盒」,即沙盒其實就是一個App特有的一個文件夾,iOS下每個App都有自己特有的一個沙盒,其結構和目錄特性都是一樣的。

1.1 沙盒結構
既然沙盒就是一個文件夾,那就看看裡面有什麼吧。沙盒的目錄結構如下圖所示,每個App的沙盒都是由下圖所示的四部分組成,每一部分中存放的數據和內容都是有一定的規范和性質的。該目錄路徑的獲取方法是直接通過 NSHomeDirectory() 就得到和應用沙盒的坦蠢路徑。
此外,每一個App還有一個Bundle目錄,即「應用程序包」,該目錄下 存放的是應用程序的源文件,包括資源文件和可執行文件。

E. 在ios沙盒機制下下面哪個文件夾是用來存放數據的

IOS沙盒機制(SandBox)種安全體系規定應用程序能該應用創建文件夾內讀取文件訪問其內容所非代碼文件都保存比圖片、聲音、屬性列表文本文件等

1.每應用程序都自沙盒內

2.能隨意跨越自沙盒訪問別應用程序沙盒內容

3.應用程序向外請求或接收數據都需要經許可權認證

查看模擬器沙盒文件夾Mac電腦存儲位置首先文件夾隱藏所要先些文件顯示打命令行:

顯示Mac隱藏文件命令:defaults write com.apple.finder AppleShowAllFiles -bool true

隱藏Mac隱藏文件命令:defaults write com.apple.finder AppleShowAllFiles -bool false

重新啟Finder點擊屏幕左角蘋標志——強制退——選擇Finder點擊重新啟候重新打Finder看隱藏文件
種比較簡單辦直接點擊Finder圖標右鍵——前往文件夾——輸入/Users/your username/Library/Application Support/iPhone Simulator/ ,確認your username本機用戶名

F. iOS怎麼獲取並移除沙盒中Documents文件夾下的所有文件

1、將所有文件存入數組

NSString*string=[(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0];
NSFileManager*fileManager=[NSFileManagerdefaultManager];
NSArray*tempFileList=[[NSArrayalloc]initWithArray:[:stringerror:nil]];


2、移除所有文件

NSString*DocumentsPath=[NSHomeDirectory():@"Documents"];
NSDirectoryEnumerator*enumerator=[[NSFileManagerdefaultManager]enumeratorAtPath:DocumentsPath];
for(NSString*fileNameinenumerator){
[[NSFileManagerdefaultManager]removeItemAtPath:[DocumentsPath:fileName]error:nil];
}


3、移除所有png文件

NSString*extension=@"png";
NSFileManager*fileManager=[NSFileManagerdefaultManager];
NSArray*paths=(NSDocumentDirectory,NSUserDomainMask,YES);
NSString*documentsDirectory=[pathsobjectAtIndex:0];
NSArray*contents=[:documentsDirectoryerror:nil];
NSEnumerator*enumerator=[contentsobjectEnumerator];
NSString*filename;
while((filename=[enumeratornextObject])){
if([[filenamepathExtension]isEqualToString:extension]){
[fileManagerremoveItemAtPath:[documentsDirectory:filename]error:nil];
}
}

G. iOS 沙盒存儲問題

1,iOS沙盒存儲三種模式
(1)Document
用於存儲用戶數據,該目錄下的所有文件會進行iCloud或iTunes備份,手櫻所以,蘋果建議將程序中建立的或在程序中瀏覽到的文件數據保存在該目錄下
1,獲取該目錄

(2)Library
該路徑下的文件夾,除Caches以外,都會被iTunes備份。這個目錄下有兩個子目錄:
1,獲取該目錄

Preferences:
包含應用程序的偏好設置文件。NSUserDefaults就是默認存放在此文件夾下面。
Caches:
iTunes不會備份此目錄,此目錄下文件不會在應用退出刪除。一般存放體積比較大,不是特別重要的資源,比如緩存數據。緩存數據在設備低存儲空間時可能會被刪除。
1,獲取該目錄

(3)tmp
目錄用於存放臨時文件,APP重新啟動時會清除這個路徑下的文明薯罩件。該路徑下的文件不會被iTunes備份。一般用來保存臨時文件,比如:相機拍攝完成時的照片視頻都會被暫時保存到這個路徑激鬧
1,獲取該目錄

(二)對文件存儲刪除
1,在Document,library,tmp文件下新建文件夾並寫入文件

2,刪除對應的文件夾
//createPath新建文件夾路徑,刪除文件原理一樣同一個方法
//創建文件管理器

H. iOS-沙盒機制-整合篇

--沙盒內部:

--內部文件作用:
-- Documents:保存應用運行時生成的需要持久化的數據,iTunes會自動備份該目錄。
蘋果建議將在應用程序中瀏覽到的文件數據保存在該目錄下。
-- Library:
Caches:
一般存儲的是緩存文件,例如圖片視頻等,此目錄下的文件不會再應用程序退出時刪除。
*在手機備份的時候,iTunes不會備份該目錄。
例如音頻,視頻等文件存放其中
Preferences:
保存應用程序的所有偏好設置iOS的Settings(設置),我們不應該直接在這里創建文件,
而是需要通過NSUserDefault這個類來訪問應用程序的偏好設置。
*iTunes會自動備份該文件目錄下的內容。
比如說:是否允許訪問圖片,是否允許訪問地理位置......
-- tmp:臨時文件目錄,在程序重新運行的時候,和開機的時候,會清空tmp文件夾。

1).獲取沙盒的Home目錄
//獲取根目錄
NSString homePath = NSHomeDirectory();
NSLog(@"Home目錄:%@",homePath);
2).獲取沙盒的Documents目錄
/
獲取Documents文件夾目錄,
@param NSDocumentDirectory 獲取Document目錄
@param NSUserDomainMask 是在當前沙盒范圍內查找
@param YES 展開路徑,NO是不展開
@return test.txt文件的路徑
/
NSString filePath =[[(NSDocumentDirectory,
NSUserDomainMask,YES)firstObject]:@"test.txt"];
3).獲取Library文件路徑
/

* 獲取Library目錄下文件路徑
*
* @param NSLibraryDirectory 獲取Library目錄
* @param NSUserDomainMask 在當前的沙盒范圍內查找
* @param YES 展開路徑,NO不展開路徑 *
* @return test.txt文件的路徑
/ NSString filePath = [[(NSLibraryDirectory,
NSUserDomainMask, YES)firstObject]:@"test.txt"];
4).獲取Library/Caches文件目錄
/

* 獲取Library目錄下文件路徑
*
* @param NSCachesDirectory 獲取Library/Caches目錄
* @param NSUserDomainMask 在當前的沙盒范圍內查找
* @param YES 展開路徑,NO不展開路徑 *
* @return test.txt文件的路徑
/NSString filePath = [[(NSCachesDirectory,
NSUserDomainMask, YES)firstObject]:@"test.txt"];
5).獲取Library/Preferences文件目錄
Preferences由系統維護,不需要我們手動的獲取文件路徑進行操作,而是需要藉助NSUserDefault來操作,但是我們是可以獲取到這個文件的。
/

* 獲取Library目錄下文件路徑
*
* @param NSLibraryDirectory 獲取Library目錄
* @param NSUserDomainMask 在當前的沙盒范圍內查找
* @param YES 展開路徑,NO不展開路徑 *
* @return test.txt文件的路徑
/
NSString filePath = [[(NSLibraryDirectory,
NSUserDomainMask, YES)firstObject]:@"Preferences"];
6).獲取tmp文件路徑
/

* 獲取tmp文件目錄下的文件路徑
*
* @return test.txt的文件路徑
*/
NSString *filePath = [NSTemporaryDirectory():@"test.txt"]
7).向沙盒中寫入文件
//向沙盒中寫入文件
NSString *documentsPathW = (NSDocumentDirectory,NSUserDomainMask, YES)[0];
//寫入文件
if (!documentsPathW) {
NSLog(@"目錄未找到");
}else {
NSString *filePaht = [documentsPath :@"test.txt"];
NSArray *array = [NSArray arrayWithObjects:@"code",@"change", @"world", @"OK", @"", @"是的", nil];
[array writeToFile:filePaht atomically:YES];}
8).向沙盒中讀取文件
//從沙盒中讀取文件
NSString *documentsPathR = (NSDocumentDirectory,NSUserDomainMask, YES)[0];
NSString *readPath = [documentsPathR :@"test.txt"];
NSArray *fileContent = [[NSArray alloc] initWithContentsOfFile:readPath];
NSLog(@"文件內容:%@",fileContent);

1).獲取應用程序包的路徑
NSString *imagePath = [NSBundle mainBundle].resourcePath;
-- 程序包文件,包含了資源文件和可執行文件AppName.app
2).獲取程序包中一個圖片資源路徑的方法(apple.png)
NSString *imagePath = [[NSBundle mainBundle]pathForResource:@"apple" ofType:@"png"];
注意:
1.imageWithname這種載入的方式的是有緩存的,第二次在載入時直接從內存中取出圖片,
這樣的話效率更高,但是會使得內存變得越來越大,通常使用在,圖片內存較小,
而且需要頻繁使用的地方。
2.NSBundle mainBundle 是通過獲取圖片的全路徑來載入圖片的,
不會有緩存,但是這樣每次就得重新載入,它也不會是在不是在使用完圖片後就釋放,
而是在下一次使用圖片的時候才會釋放,所以需要我們在使用完圖片後,手動來釋放內存。
3).將NSData類型的數據存儲到本地(以圖片為例)

I. 沙盒數據存儲(SandBox)

沙滑敬隱盒是系統為了ios程序分配的可以讀寫數據的文件區域。

沙盒裡面有三個重要的文件夾:

1documents:用於存儲NSUesrDefults之外的數據。

2tmp用於存儲臨時數據,當數據不再需要的時候我們將刪除數據。

3library:NSUserDefults的數據保存在LIbrary/稿游Preferences下面。

接下來舉信廳幾個沙盒應用的例子:
字元串使用沙盒進行存儲

J. iOS 沙盒文件夾的區別

1.Document裡面的文件可以備份到iCloud上,不是很重和陵要的文件可信枝以不用放在這裡面;
2.library裡面的文件不會備份到iCloud上,不會被系統清楚,可以放一些緩存的內容,如圖片或視頻;
3.temp裡面的文件會被系統喚坦戚清楚掉;

熱點內容
java分 發布:2025-05-15 13:34:36 瀏覽:845
如何下載卡巴斯基安卓版 發布:2025-05-15 13:34:36 瀏覽:479
排序函數c語言 發布:2025-05-15 13:06:28 瀏覽:6
韓服lol掛機腳本 發布:2025-05-15 12:42:56 瀏覽:461
監控存儲伺服器如何調試 發布:2025-05-15 12:36:30 瀏覽:219
一萬級凈化車間有哪些配置 發布:2025-05-15 12:16:41 瀏覽:98
javazip解壓加密 發布:2025-05-15 12:15:02 瀏覽:943
dnf伺服器存放什麼信息 發布:2025-05-15 12:11:07 瀏覽:217
辦公室視頻劇本腳本 發布:2025-05-15 12:03:51 瀏覽:491
編譯失敗什麼意思 發布:2025-05-15 11:58:18 瀏覽:87