2012-09-06 182 views
2

我有一個由多個單詞組成的文本文件。它們全部由新行隔開。從文本文件中讀取objective-c

什麼香港專業教育學院的嘗試:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"txt"]; 

if (filePath) { // This does trigger, so the file is actually found. 

    NSArray *arr = [filePath componentsSeparatedByString:@"\n"]; 

} 

什麼香港專業教育學院也嘗試:

NSMutableArray * lines = [[NSMutableArray alloc] initWithArray:[filePath componentsSeparatedByString:@"\n"] copyItems: YES]; 

這些都不似乎工作,我只是似乎得到的文件路徑,當我使用的NSLog讀出線條。你們能幫忙嗎?

行數組似乎只包含一個對象,即文本文件位置的字符串。

我想要一個數組,其中每個字符串是一個由紡織品中的一行分隔的字符串。

回答

12

首先,你需要在你的應用程序包中獲取文件。這意味着,您必須將其放入應用程序的「資源」文件夾中。

然後,你可以這樣閱讀:

NSString* path = [[NSBundle mainBundle] pathForResource:@"filename" 
               ofType:@"txt"]; 

然後加載內容爲NSString更容易:

NSString* content = [NSString stringWithContentsOfFile:path 
               encoding:NSUTF8StringEncoding 
               error:NULL]; 

然後創建數組:

NSArray *arr = [content componentsSeparatedByString:@"\n"]; //might also be @"\r" check both. 
+0

你忘了添加按行分隔,但我自己做了。現在完美運作。謝謝! –

+0

請你糾正我的答案,以便它可以幫助別人也......謝謝... –

+0

OFc,SO只是不會讓你接受一個快速的答案。 –

1

你在那裏做的所有事情都是盜用你的文件路徑 - 你還沒有從文件中加載任何數據。

很多方法可以做到這一點。 [NSData initWithContentsOfURL...可能是一個開始

1

的方法[NSString componentsSeparatedByString:]在字符串本身上使用,這就是你的情況f文件路徑,而不是此路徑中文件的內容。

有很多方法可以從文件中讀取。 Dave DeLong針對這個問題發佈了一個聰明的方法。檢查它here

0

的NSString * stringFileContent = [NSString的stringWithContentsOfFile:[[一個NSBundle mainBundle] pathForResource:@ 「yourfilename」 ofType:@ 「TXT」]編碼:NSUTF8StringEncoding錯誤:&錯誤];

+0

歡迎來到堆棧溢出!這並不能解答這個問題。一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你將能夠[評論任何職位](http://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](http://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 – ddb