Objective-C: ファイルを行ごとに読み取る 質問する

Objective-C: ファイルを行ごとに読み取る 質問する

Objective-C で大きなテキスト ファイルを処理する適切な方法は何ですか? 各行を個別に読み取る必要があり、各行を NSString として処理するとします。これを行う最も効率的な方法は何ですか?

1 つの解決策は、NSString メソッドを使用することです。

+ (id)stringWithContentsOfFile:(NSString *)path 
      encoding:(NSStringEncoding)enc 
      error:(NSError **)error 

次に、改行区切りで行を分割し、配列内の要素を反復処理します。ただし、これはかなり非効率に思えます。ファイルをストリームとして扱い、一度にすべて読み込むのではなく、各行を列挙する簡単な方法はありませんか? Java の java.io.BufferedReader のようなものです。

ベストアンサー1

これは一般的な読み上げには有効ですStringTextより長いテキストを読みたい場合は(文字サイズが大きい)他の人がここで言及したバッファリングなどの方法を使用してください(メモリ空間にテキストのサイズを予約)

テキストファイルを読むとします。

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:@";"]];

これで完了です。

おすすめ記事