在读取本地文件时,我们一般都会直接考虑到NSBundle,因为它是指当前目录,而通常我们有时也会考虑到NSSearchPathForDirectoriesInDomains来获取程序目录,从而达到读取某一指定文件。
1、使用NSBundle读取文件
//dataPath 表示当前目录下指定的一个文件 data.plist
NSString *dataPath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
NSString *dataPath = [[NSBundle mainBundle] pathForResource:@"Data.plist" ofType:nil];
// 如果plist文件中ROOT的类型是Array
NSArray *array = [NSArray arrayWithContentsOfFile:dataPath];
// 如果plist文件中ROOT的类型为Dictionary
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:dataPath];
2、直接使用NSSearchPathForDirectoriesInDomains读取文件
//filePath 表示程序目录下指定文件
NSString *filePath = [self documentsPath:@"usefile.txt"];
- (NSString *)documentsPath:(NSString *)fileName
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDitectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths firstObjects];
return [documentsDiretory stringByAppendingPathComponent:fileName];
}
注意点,在这里文件名可能在赋值的时候不知不觉就添加进了前后不必要的空格,因此在读取文件指定目录时,需要将它去空格:
// 去左右空格
stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]
// 去掉所有不必要的空格
NSString *strUrl = [urlString stringByReplacingOccurrencesOfString:@" " withString:@""];
我们在总结的时候,适当的可以使用以下方法来讨论或解决问题:
【问题分析】
1、使用NSString中stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]方法只是去掉左右两边的空格;
2、使用NSString *strUrl = [urlString stringByReplacingOccurrencesOfString:@" " withString:@""];可以去掉空格,注意此时生成的strUrl是autorelease属性的,不要妄想对strUrl进行release操作。
【问题小结】
用stringByReplacingOccurrencesOfString方法去掉空格,实际上只是做了字符替换操作,除了空格还可以替换其它字符。目前该方法只使用了一次,还不能确定该方法的副作用。
// 在读文件时,看文件的根目录是什么类型的,然后用什么类型来接住它。
就比如说图1,需要用到字典类型来接住它。
NSDictionary