Objective-C で大きなテキスト ファイルを処理する適切な方法は何ですか? 各行を個別に読み取る必要があり、各行を NSString として処理するとします。これを行う最も効率的な方法は何ですか?
1 つの解決策は、NSString メソッドを使用することです。
+ (id)stringWithContentsOfFile:(NSString *)path
encoding:(NSStringEncoding)enc
error:(NSError **)error
次に、改行区切りで行を分割し、配列内の要素を反復処理します。ただし、これはかなり非効率に思えます。ファイルをストリームとして扱い、一度にすべて読み込むのではなく、各行を列挙する簡単な方法はありませんか? Java の java.io.BufferedReader のようなものです。
ベストアンサー1
これは一般的な読み上げには有効ですString
。Text
より長いテキストを読みたい場合は(文字サイズが大きい)他の人がここで言及したバッファリングなどの方法を使用してください(メモリ空間にテキストのサイズを予約)。
テキストファイルを読むとします。
NSString* filePath = @""//file path...
NSString* fileRoot = [[NSBundle mainBundle]
pathForResource:filePath ofType:@"txt"];
新しい行を削除したい。
// read everything from text
NSString* fileContents =
[NSString stringWithContentsOfFile:fileRoot
encoding:NSUTF8StringEncoding error:nil];
// first, separate by new line
NSArray* allLinedStrings =
[fileContents componentsSeparatedByCharactersInSet:
[NSCharacterSet newlineCharacterSet]];
// then break down even further
NSString* strsInOneLine =
[allLinedStrings objectAtIndex:0];
// choose whatever input identity you have decided. in this case ;
NSArray* singleStrs =
[currentPointString componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@";"]];
これで完了です。