NSFileManager文件管理


#import "TestViewController.h"

@implementation TestViewController


- (void)viewDidLoad {
    [super viewDidLoad];
	
	
	//創建與刪除:
    //創建文件管理器
    NSFileManager *fileManager = [NSFileManager defaultManager];
    //獲取路徑
    //參數NSDocumentDirectory要獲取哪種路徑 —— 獲取    /Documents路徑
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];//去處需要的路徑
	NSLog(@"%@",documentsDirectory);
	
	//更改到待操作的目錄下
    [fileManager changeCurrentDirectoryPath:[documentsDirectory stringByExpandingTildeInPath]];
	
	//創建文件fileName文件名稱,contents文件的內容,如果開始沒有內容可以設置爲nil,attributes文件的屬性,初始爲nil
    [fileManager createFileAtPath:@"fileName" contents:nil attributes:nil];
	//刪除待刪除的文件
    [fileManager removeItemAtPath:@"createdNewFile" error:nil];
	
	
	
	//寫入數據:
	//獲取文件路徑
	NSString *path = [documentsDirectory stringByAppendingPathComponent:@"fileName"];
    
    //待寫入的數據
    NSString *temp = @"Hello friend";
    int data0 = 100000;
    float data1 = 23.45f;
    
    //創建數據緩衝
    NSMutableData *writer = [[NSMutableData alloc] init];
    
    //將字符串添加到緩衝中
    [writer appendData:[temp dataUsingEncoding:NSUTF8StringEncoding]];
	
    //將其他數據添加到緩衝中
    [writer appendBytes:&data0 length:sizeof(data0)];
    [writer appendBytes:&data1 length:sizeof(data1)];
    
    //將緩衝的數據寫入到文件中
    [writer writeToFile:path atomically:YES];
    [writer release];
	

	
	//讀取數據:
    int gData0;
    float gData1;
    NSString *gData2;
    
    NSData *reader = [NSData dataWithContentsOfFile:path];
    gData2 = [[NSString alloc] initWithData:[reader subdataWithRange:NSMakeRange(0, [temp length])]
								   encoding:NSUTF8StringEncoding];
    [reader getBytes:&gData0 range:NSMakeRange([temp length], sizeof(gData0))];
    [reader getBytes:&gData1 range:NSMakeRange([temp length] + sizeof(gData0), sizeof(gData1))];
    
    NSLog(@"gData0:%i  gData1:%0.2f gData2:%@", gData0, gData1, gData2);
	

	
/*	
	//讀取工程中的文件:
	//讀取數據時,要看待讀取的文件原有的文件格式,是字節碼還是文本,我經常需要重文件中讀取字節碼,所以我寫的是讀取字節文件的方式。
    //用於存放數據的變量,因爲是字節,所以是UInt8
    UInt8 b = 0;
	
    //獲取文件路徑
    NSString *path8 = [[NSBundle mainBundle] pathForResource:@"fileName" ofType:@""];
	
	//獲取數據 
	NSData *reader8 = [NSData dataWithContentsOfFile:path8];
    
	//獲取字節的個數
    int length = [reader8 length];
    NSLog(@"------->bytesLength:%d", length);
    for(int i = 0; i < length; i++)
    {
        //讀取數據
        [reader8 getBytes:&b range:NSMakeRange(i, sizeof(b))];
        NSLog(@"-------->data%d:%d", i, b);    
        
    }
	
*/	
	
	
	
	
	
/*
	
	
	//創建一個NSFileManager,創建自定義文件夾myTest
	NSFileManager *fileManger = [NSFileManager defaultManager];
	NSString *myDirectory = [documentsDirectory stringByAppendingPathComponent:@"myTest"];
	BOOL ok = [fileManger createDirectoryAtPath:myDirectory attributes:nil];
	
	//取得一個目錄下得所有文件名:(如上面的myDirectory)可用
	NSArray *file = [fileManger subpathsOfDirectoryAtPath: myDirectory error:nil]; 
	//或
	//NSArray *files = [fileManager subpathsAtPath: myDirectory ]; 
	
	//讀取某個文件:
	NSData *data = [fileManger contentsAtPath:myFilePath];//myFilePath是包含完整路徑的文件名
	//或直接用NSData 的類方法:
	//NSData *data = [NSData dataWithContentOfPath:myFilePath]; 
	
	
	//保存某個文件:
	//可以用 NSFileManager的
	- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;
	//或 NSData 的
	- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
	- (BOOL)writeToFile:(NSString *)path options:(NSUInteger)writeOptionsMask error:(NSError **)errorPtr;
*/	
	

	
	
//	NSString *filePath = [[NSBundle mainBundle] bundlePath];//獲得app的路徑
//2011-08-24 09:52:30.168 Test[619:207] /Users/ibokanwisdom06/Library/Application Support/iPhone Simulator/4.2/Applications/E91BDD30-2DB9-4982-BBCA-EE51A65091BA/Test.app
//	NSString *filePath = [[NSBundle mainBundle] executablePath];//獲得test的路徑
//2011-08-24 09:52:54.882 Test[649:207] /Users/ibokanwisdom06/Library/Application Support/iPhone Simulator/4.2/Applications/E91BDD30-2DB9-4982-BBCA-EE51A65091BA/Test.app/Test
//	NSString *filePath = [[NSBundle mainBundle] privateFrameworksPath];//獲得Frameworks的路徑
//	NSLog(@"%@",filePath);

	
	
}



- (void)dealloc {
    [super dealloc];
}

@end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章