2013年6月9日 星期日

iOS_Access File

寫扣前先來整理一下objective-c 裡面”一些“檔案存取的方法
1. 讀取project中所加入的圖檔:
//讀取圖檔到UIImage的object中
UIImage *image = [UIImage imageNamed:@"image_name.png"];
//把UIImage加入到UIImageView
UIImageView *imageView = [[UIImage alloc]initWithImage:image];
2. 讀取加入到project中的其他檔案:
//獲得txt檔案的路徑
NSString *path = [[NSBundle mainBundle]pathForResource:@"file_name" ofType:@"txt"];
//write to NSString
NSError *error;
NSString *fileText = [[NSString alloc]initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
3. 讀取App中亂數資料夾的檔案,在實體的iPhone中,App的亂數資料夾主要存在/var/mobile/Applications/亂數資料夾
//以下method是在回傳檔案路徑
///var/mobild/Applications/亂數資料夾/Documents/file_name(iPhone上)
///Users/使用者帳號/Library/Application Support/iPhone Simulator/模擬器版本/Applications/亂數資料夾/Documents/file_name(模擬器上)
- (NSString *)filePath:(NSString *)name{
 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)
    NSString *documentsDirectory = [paths objectArIndex:0];
    return [documentsDirectory stringByAppendingPathComponent:name]
}


//create file
NSString *path = [self filePath:@"test.txt"];
if([[NSFileManager defaultManager]fileExistsAtPath:path]){
    NSLog(@"file exist");
}
else{
    NSLog(@"create file");
    NSArray *array = [[NSArray alloc]initWithObjects:@"andy",@"peter",@"John",nil];
    [array writeToFile:path atomically:YES];
}


//read file
NSString *path = [self filePath:@"test.txt"];
if([[NSFileManger defaultManger]fileExistsAtPath:path]){
    NSLog(@"file exist");
    NSArray *array = [[NSArray alloc]initWithContentsOfFile:path];
    for(NSString *name in array){
        NSLog(@"%@",name);
    }
}
4. 網路上找到一些關於路徑的整理(參考資料):
iPhone檔案結構:
<程式根目錄>
    我的程式.app (程式的主要資料夾,只能讀取)
        我的程式
        MainWindow.xib
        其他在Xcode中所加入的Resources
    Documents
    Library
        Cache
        Preference

以下為找到路徑的方法:
// 基本的目錄
NSString *homePath = NSHomeDirectory(); // 根目錄
NSString *tmpPath = NSTemporaryDirectory(); // 暫存目錄

// Documents 資料夾
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];

// <程式根目錄>/Documents/foo.plist
NSString *fooPath = [documentsPath stringByAppendingPathComponent:@“foo.plist”];

沒有留言:

張貼留言