應用程序沙盒組成
每一個文件夾就是一個應用程序沙盒
每一個應用程序沙盒下包含以下幾個文件
- Documents(數據備份位置)
- tmp(臨時的緩存數據)
- xxx(項目名NSBundle)
- Library(數據庫)
獲取沙盒下Documents目錄的方法
NSArray * array1 = NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory, //獲取Documents
NSUserDomainMask, //iOS中一般為此選項
YES); //YES是將~符號展開為絕對路徑
NSString * docPath = [array1 objectAtIndex:0]; //Documents目錄
NSArray * array2 = NSSearchPathForDirectoriesInDomains(
NSLibraryDirectory,
NSUserDomainMask, YES);
NSString * libPath = [array2 objectAtIndex:0]; //Library目錄
NSString * tmpPath = NSTemporaryDirectory(); //tmp目錄
Documents目錄在備份時會包含進去,tmp目錄備份時并不包含在內
文件類型及文本編碼
文件類型是指為了存儲信息而使用的對信息的特殊編碼方式
我們日常接觸到的文件分為ASCII和Binary兩種形式
文本編碼是使用預先規定的方法將文本編成數字然后加以存儲,是一種轉換規則
常見文本編碼有以下幾種:
- ASCII編碼
- 國標系列編碼(GB2312,GBK,GB18030)
- Unicode編碼
使用NSString進行文件讀取
使用NSString可以直接讀取的文件的內容到字符串中
注意:文件過大會造成內存占用過大,所以使用NSString讀取文件內容時需要注意文件大小
NSString中的以方法可以讀取文件內容
NSError * error;
NSString * fileContent = [NSString stringWithContentsOfFile:@"文件路徑" encoding:NSUTF8StringEncoding error:&error];
//第一個參數是文件的路徑
//第二個參數是使用什么樣的編碼打開指定文件
//第三個參數為錯誤對象,如果發生錯誤,錯誤對象將包含錯誤信息,注意該參數為指針的指針類型
NSError * error;
NSString *fileContent = [[NSString alloc]initWithContentsOfFile:
@"文件路徑" encoding:NSUTF8StringEncoding error:&error];
//此處三個參數跟上面方法中的三個參數含義一致
使用NSString進行文件寫入
使用NSString同樣可以將字符串的內容寫入指定文件,方法如下
NSError * error;
NSString * content = @“潯陽江頭夜送客,楓葉荻花秋瑟瑟。主人下馬客在船,舉酒欲飲無管弦。醉不成歡慘將別,別時茫茫江浸月。忽聞水上琵琶聲,主人忘歸客不發。尋聲暗問彈者誰?琵琶聲停欲語遲。移船相近邀相見,添酒回燈重開宴。千呼萬喚始出來,猶抱琵琶半遮面。";
[content writeToFile:@"文件路徑" atomically:YES encoding:NSUTF8StringEncoding error:&error];
//第一個參數為要保存的文件路徑
//第二個參數為YES時,保存文件會生成臨時文件,以防意外發生而破壞原有文件
//第三個參數為保存時使用的編碼集
//第四個參數為錯誤對象,存放保存時的錯誤信息
使用NSData進行文件讀寫
NSString讀寫文件一般處理的都是文本文件,二進制文件往往使用NSData進行讀寫
NSData * data = [NSData dataWithContentsOfFile:@“文件路徑”];
//只有一個參數為要讀取的文件路徑
NSData * data = [[NSData alloc]initWithContentsOfFile:@"文件路徑"];
NSData * data;
//通過某種方法將data中充滿數據
[data writeToFile:@"文件路徑" atomically:YES];
//第一個參數為要保存的路徑
//第二個參數為YES可以在保存時生成臨時文件,防止意外發生時,損壞原始文件
NSFileManager的使用
NSFileManager是Objective-C下提供的一個管理文件及目錄的類,獲取NSFileManager方法如下:
NSFileManager * fileManager = [NSFileManager defaultManager];
NSFileManager常用方法:
BOOL isExists = [fileManager fileExistsAtPath:@“文件路徑"];
//判斷一個文件或目錄是否存在
[fileManager createFileAtPath:@"文件路徑" contents:nil attributes:nil];
//創建一個指定內容及屬性的文件在給定路徑處
[fileManager moveItemAtPath:@"源路徑" toPath:@"目標路徑" error:nil];
//移動一個文件到目標位置
數據庫(Sqlite)
數據庫是按照數據結構來組織、存儲和管理數據的倉庫。在一般的軟件中常常需要把某些相關的數據放進這樣的“倉庫”,并根據需要進行相應的處理。
目前主流的數據庫如下:
Oracle(甲骨文公司)、DB2(IBM)、SQL Server(微軟)、mySql(MySQL AB - > Sun -> Oracle)、SQLite
Oracle 千萬級別的數據庫
SQLite 嵌入式數據庫
SQLite數據類型
DBA(數據庫管理)
SQLite中的數據類型,最常用的有:
Integer 整型
Real 浮點型
Text 文本類型
Blob 二進制類型,用來存儲文件,比如圖片。
SQL語句
sql 語句就是對數據庫進行操作的一種語言,稱之為結構化查詢語言(Structured Query Language)。
最常用的功能就是增刪改查(CRUD)
查找數據:select * from table1 where 范圍 (table:表名 where:查詢的條件)
增加數據:insert intotable1(field1,field2) values(value1,value2) (insert:列的名稱 values:放對應的值)
刪除數據:delete from table1 where 范圍
修改數據:update table1 set field1=value1 where 范圍
使用Sqlite數據庫
添加“libsqlit3.dylib庫”,并引入頭文件"sqlite3.h"
使用sqlite3_open方法打開數據庫(如果不存在系統自動新建)
使用sqlite3_exec方法創建數據庫表,并插入數據
查找數據
使用sqlite3_close方法釋放資源