當前位置:首頁 » 存儲配置 » 沙盒存儲讀取

沙盒存儲讀取

發布時間: 2023-05-04 06:52:21

㈠ iOS開發之數據存儲以及刪除

iOS本地數據保存有多種方式,歸納如下:

本章不僅是學習多種數據存儲方式,也可學習到其他知識點,下面就讓我們詳細來看:

具體方培梁核法為:
第一步:獲得文件即將保存的路徑,並生成在該路徑下的文件:

第二步:往文件中寫入/讀取:
方法一:

方法配掘二:

方法三:

2.NSUserDefaults:是一個單例對象,在整個應用程序的生命周期中都只有一個實例。用渣旅來保存應用程序設置和屬性、用戶保存的數據。存儲在沙盒的Library/Preference中,NSUserDefaults可以存儲的數據類型包括:NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary。寫入和讀取都比較簡單,如下:
寫入:

NSString *str = [userDefault objectForKey:@"gang"];

@interface Person : NSObject <NSCoding>//遵守NSCoding協議
@property (nonatomic,strong) NSString *name;
@property (nonatomic,assign) NSInteger age;
@end

解檔操作:
同樣調用NSCoder子類NSKeyedArchiver的方法unarchiveRootObject:toFile: 即可
[NSKeyedUnarchiver unarchiveObjectWithFile:path];

NSMutableData *data = [NSMutableData data];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];
[archiver encodeObject:person forKey:@"person"];
[archiver encodeObject:bir forKey:@"bir"];
// 存檔完畢(一定要調用這個方法)
[archiver finishEncoding];
[data writeToFile:path atomically:YES];

NSData *undata = [NSData dataWithContentsOfFile:path];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];
[unarchiver decodeObjectForKey:@"person"];
[unarchiver decodeObjectForKey:@"bir"];
// 恢復完畢
[unarchiver finishDecoding];

㈡ 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類型的數據存儲到本地(以圖片為例)

㈢ swift存儲圖片到沙盒

將圖片保存到沙盒下,首先獲取沙盒路徑,慎跡笑追加圖片名稱,將圖片轉換成NSData類型,寫到文件里。
persent參數:圖片質量寬含參數,該值越大,表示圖片越清晰,圖片文州鉛件也就越大

也可以通過newSize自定義圖片的大小

從文件中讀取圖片

㈣ 什麼是應用程序沙盒如何訪問沙盒在ios開發中有何作用

1、iOS沙盒機制
iOS應用程序只能在為該改程序創建的文件系統中讀取文件,不可以去其它地方訪問,此區域被成為沙盒,所以所有的非代碼文件都要保存在此,例如圖像,圖標,聲音,映像,屬性列表,文本文件等。
1.1、每個應用程序都有自己的存儲空間
1.2、應用程序不能翻過自己的圍牆去訪問別的存儲空間的內容
1.3、應用程序請求的數據都要通過許可權檢測,假如不符合條件的話,不會被放行。
通過這張圖只能從表層上理解sandbox是一種安全體系,應用程序的所有操作都要通過這個體系來執行,其中核心內容是:sandbox對應用程序執行各種操作的許可權限制。

2、打開模擬器沙盒目錄
下面看看模擬器的沙盒文件夾在mac電腦上的什麼位置。
文件都在個人用戶名文件夾下的一個隱藏文件夾里,中文叫資源庫,他的目錄其實是Library。
2.1 方法1、可以設置顯示隱藏文件,然後在Finder下直接打開。設置查看隱藏文件的方法如下:打開終端,輸入命名
顯示Mac隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
隱藏Mac隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false
輸完單擊Enter鍵,退出終端,重新啟動Finder就可以了
重啟Finder:滑鼠單擊窗口左上角的蘋果標志-->強制退出-->Finder-->
現在能看到資源庫文件夾了。

打開資源庫後找到/Application Support/iPhone Simulator/文件夾。這裡面就是模擬器的各個程序的沙盒目錄了。

2.2 方法2、這種方法更方便,在Finder上點->前往->前往文件夾,輸入/Users/username/Library/Application Support/iPhone Simulator/ 前往。
username這里寫你的用戶名。
3、目錄結構
默認情況下,每個沙盒含有3個文件夾:Documents, Library 和 tmp。因為應用的沙盒機制,應用只能在幾個目錄下讀寫文件
Documents:蘋果建議將程序中建立的或在程序中瀏覽到的文件數據保存在該目錄下,iTunes備份和恢復的時候會包括此目錄
Library:存儲程序的默認設置或其它狀態信息;
Library/Caches:存放緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應用退出刪除
tmp:提供一個即時創建臨時文件的地方。

iTunes在與iPhone同步時,備份所有的Documents和Library文件。
iPhone在重啟時,會丟棄所有的tmp文件。

我們創建一個IosSandbox的項目來展開沙盒和文件讀寫等操作的練習。
創建後找到模擬器上對應的目錄,

㈤ 沙盒數據存儲(SandBox)

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

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

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

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

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

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

㈥ OC -- 應用數據儲存方式

      之前對數據之久化一直都是一知半解,只知道有幾種方法,但不清楚這幾種方法的區別.經過網上的查詢和學習.寫一下自己的心得體會.

       數據持久化說白了就是將數據保存到本地的磁碟中.使得在應用程序重啟後可以繼續訪問之前保存的數據.在ios中運用了很多的存儲方式,一般我們用的方式分為以下5中:

沙盒是蘋果的發明的內存管理機制,ios 程序默認情況下只能訪問程序自身的目錄,且這個目錄被稱為"沙盒"

應用程序包: 包含了所有的資源文件和可執行的文件.

Documents :保存應用運行時生成的需要數據持久化的數據,iTunes同步設備時會備份目錄.例如游戲存檔

tmp: 保存應用運行時所需的臨時數據,使用完後就會將相應的文件從該目錄刪除,應用沒有運行時,系統可能也會清除該文件下的數據.iTunes同步設備時,不會備份該目錄.

Library / Caches : 保存應用運行時生成的需要持久化的數據,iTunes同步設備時不會備份該目錄.-----一般存儲體積大.不需要備份的非重要數據.

Library / Preference :保存應用的所有偏好設置,iOS的settings(設置)應用會在改目錄中查找應用的設置信息.iTunes同步設備時會備份該目錄.

雖然沙盒中有這么多文件夾,但是每個文件夾功能都是不相同的在上面我們也描述了,每次文件夾的功能.所以以後在存儲數據的時候要注意存儲的文件.一定要選擇合適的文件夾.

獲取相應文件夾位置的方法.

獲取沙盒根目錄

應用程序包:

Documents:(有兩種獲取方式)

TMP 

Library/Caches:

Library/Preference

Plist文件

plist文件是將某些特定的類,通過XML的文件方式保存在目錄中,並且plist 文件是存儲在Documents文件夾下面的.

可以被序列化的類型只有如下幾種:

1獲取文件路徑

2.存儲

3.讀取

4.注意

只有以上列出的類型才能使用plist文件存儲。

存儲時使用writeToFile: atomically:方法。 其中atomically表示是否需要先寫入一個輔助文件,再把輔助文件拷貝到目標文件地址。這是更安全的寫入文件方法,一般都寫YES。

讀取時使用arrayWithContentsOfFile:方法。

㈦ 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的路徑如下所示:

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

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

㈧ 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新建文件夾路徑,刪除文件原理一樣同一個方法
//創建文件管理器

熱點內容
電視父母鎖屏密碼應該會是什麼 發布:2025-02-11 08:36:42 瀏覽:891
梅花適合用哪些植物進行配置 發布:2025-02-11 08:30:54 瀏覽:251
安卓手機如何像蘋果一樣彈窗 發布:2025-02-11 08:26:33 瀏覽:911
壓縮文件掃碼 發布:2025-02-11 08:20:55 瀏覽:257
小米5安卓70怎麼分屏 發布:2025-02-11 08:00:58 瀏覽:139
訪問二維碼 發布:2025-02-11 08:00:11 瀏覽:882
騰訊雲香港伺服器搭建 發布:2025-02-11 07:53:44 瀏覽:793
eclipsejava編譯器 發布:2025-02-11 07:53:09 瀏覽:494
生化危機7D加密破解 發布:2025-02-11 07:48:32 瀏覽:943
資料庫新增資料庫 發布:2025-02-11 07:40:45 瀏覽:198