歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> iOS開發:數據存儲之文件操作

iOS開發:數據存儲之文件操作

日期:2017/3/1 10:02:50   编辑:Linux編程

在ios開發中,如果要訪問模擬器中app的文件夾,既可以通過程序本身直接去訪問,也可以通過命令行去訪問。

在命令行下的訪問方法為,首先打開命令,在命令行中,敲入以下命令就可以訪問到所指定app的目錄,命令如下:

cd/Users/ren/Library/Application\Support/iPhone\Simulator/6.0/Applications/805D7CF0-5DBB-4FCD-9922-0D5C460F510E/

對命令行解讀:

cd /Users/主機名/Library/ApplicationSupport/iPhone Simulator/SDK版本號/Applications/應用唯一標示ID/

然後,就可以進入本應用的任意一個文件夾。如果要對文件夾進行拷貝、刪除操作,這需要root權限。

第二種,是通過應用程序本身去訪問自身的文件夾。並通過程序進行文件的創建、刪除、寫入和讀出等操作。

1.訪問指定位置的文件夾。

訪問Documents文件夾

NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUSErDomainMask,YES);

NSString *docPaths = [paths objectAtIndex:0];

訪問Cache文件夾

NSArray *paths1 =NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

NSString *cachePaths = [paths1 objectAtIndex:0];

訪問Library文件夾

NSArray *paths2 =NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

NSString *libraryPaths = [paths2 objectAtIndex:0];

//NSDocumentDirectory常量就是指定查找的目標是Documents文件夾,而NSUuserDomainMask常量指定從應用程序的主目錄中搜索,也就是從Application文件夾的相應程序的文件夾開始找
//YES表示希望獲取所有找到的目錄的完整路徑
NSString *documentsDirectory = [paths objectAtIndex:0];
//這句話記住就行,每個應用程序文件夾裡面只有唯一一個Documents文件夾,但是NSSearch方法會返回很多個,我們只取第一個即可。(Cache和Library與Documents相同)。

2.下面是文件的創建、刪除、寫入和讀出。http://www.linuxidc.com

創建與刪除:
//創建文件管理器
NSFileManager *fileManager = [NSFileManager defaultManager];
//獲取路徑
//參數NSDocumentDirectory要獲取那種路徑
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];//去處需要的路徑

//更改到待操作的目錄下
[fileManager changeCurrentDirectoryPath:[documentsDirectorystringByExpandingTildeInPath]];

//創建文件fileName文件名稱,contents文件的內容,如果開始沒有內容可以設置為nil,attributes文件的屬性,初始為nil
[fileManager createFileAtPath:@"fileName" contents:nilattributes:nil];

//刪除待刪除的文件
[fileManager removeItemAtPath:@"createdNewFile" error:nil];

//寫入數據:

//創建文件管理器

NSFileManager *fileManager = [NSFileManagerdefaultManager];

//獲取路徑

//參數NSDocumentDirectory要獲取那種路徑

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

NSString *documentsDirectory = [pathsobjectAtIndex:0];//去處需要的路徑

NSLog(@"documentsDirecrtory:%@",documentsDirectory);

//更改到待操作的目錄下

[fileManager changeCurrentDirectoryPath:[documentsDirectorystringByExpandingTildeInPath]];

//創建文件fileName文件名稱,contents文件的內容,如果開始沒有內容可以設置為nil,attributes文件的屬性,初始為nil

[fileManager createFileAtPath:@"fileone"contents:nil attributes:nil];

NSString *str = [documentsDirectorystringByAppendingPathComponent:@"fileone"];

NSLog(@"str:%@",str);

BOOL isExsit = [fileManagerfileExistsAtPath:str];

if (isExsit) {

NSLog(@"文件存在");

}

else

{

NSLog(@"文件不存在");

}

//獲取文件路徑

NSString *path = [documentsDirectorystringByAppendingPathComponent:@"fileone"];

NSLog(@"path:%@",path);

//待寫入的數據

NSString *temp = @"Hello friend";

int data0 = 100000;

float data1 = 23.45f;

//創建數據緩沖

NSMutableData *writer = [[NSMutableDataalloc] init];

//將字符串添加到緩沖中

[writer appendData:[temp dataUsingEncoding:NSUTF8StringEncoding]];

//將其他數據添加到緩沖中

[writer appendBytes:&data0 length:sizeof(data0)];

[writer appendBytes:&data1 length:sizeof(data1)];

//將緩沖的數據寫入到文件中

[writer writeToFile:path atomically:YES];

//讀取數據:

int gData0;

float gData1;

NSString *gData2;

NSData *reader = [NSDatadataWithContentsOfFile:path];

gData2 = [[NSString alloc] initWithData:[readersubdataWithRange:NSMakeRange(0, [temp length])]

encoding:NSUTF8StringEncoding];//得到第一個寫入的數據

[reader getBytes:&gData0 range:NSMakeRange([templength], sizeof(gData0))];//得到第二個寫入的數據

[reader getBytes:&gData1range:NSMakeRange([temp length] + sizeof(gData0), sizeof(gData1))];//得到第三個寫入的數據

//NSMakeRange代表數據范圍,getBytes從reader中讀取指定范圍的數據

NSLog(@"%@,%d,%f",gData2,gData0,gData1);

//讀取工程中的文件:

//讀取數據時,要看待讀取的文件原有的文件格式,是字節碼還是文本

//可以以字節碼格式,也可以以文本格式去讀取

//用於存放數據的變量,因為是字節,所以是UInt8

UInt8 b = 0;

//獲取文件路徑

NSString *path1 = [[NSBundle mainBundle] pathForResource:@"key"ofType:@"txt"];

//獲取數據

NSData *reader1 = [NSDatadataWithContentsOfFile:path1];

//獲取字節的個數

int length = [reader1 length];

//獲取文本中的字符串

NSString *ges = [[NSString alloc] initWithData:[reader1subdataWithRange:NSMakeRange(0, length)] encoding:NSUTF8StringEncoding];

NSLog(@"%@",ges);

NSLog(@"lenghth:%d",length);

for(int i = 0; i < length; i++) {

//讀取數據

[reader getBytes:&brange:NSMakeRange(i, sizeof(b))];

NSLog(@"——–>data%d:%d", i,b);

}

文件操作demo地址:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2013年資料/1月/20日/iOS開發:數據存儲之文件操作

Copyright © Linux教程網 All Rights Reserved