寫扣前先來整理一下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”];
沒有留言:
張貼留言