- ベストアンサー
行ごとでなく文字列を区切りにファイルを読み込む
非常の大きなテキストファイルを、1行1行ではなく、特定の文字列、 できれば正規表現を区切りとして、100行ぐらいをまとめて順次読み込みたいのですが、 どのようにすればいいでしょうか。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
java.util.Scannerでは要件を満たせませんか? Scannerはdelimiterに設定された正規表現に従いソースをトークン化します。 delimiterのデフォルト値は「1つ以上連続するホワイトスペース」ですが、 このdelimiterはScanner#useDelimiterメソッドを使用して任意の正規表現に変更可能です。
その他の回答 (1)
- askaaska
- ベストアンサー率35% (1455/4149)
回答No.1
自作するしかないわね。 1byteずつ読み込んで 区切り文字の先頭とマッチングしたら・・・ と言う風な処理をがりがり書くしかないわ。
質問者
補足
さっそく、ありがとうございます。 そうなんですか。 Javaで、Perlの$/に相当するものを知りたかったんですが... Perlで書けば何の問題もないのですが、 Javaで教えてくれと頼まれているもので、 どなたか助けていただけると嬉しいです。 ちなみに、僕に依頼している方は、Javaどころか プログラミング自体初心者です。 僕ががりがり書いて、それを渡すしか手はないでしょうか。
お礼
// ありがとうございます。 // これです、教えていただきたかった方法は。 // とても助かりました。 import java.io.*; import java.util.Scanner; public class Foo { public static void main(String[] args) throws IOException { String separator = "--\n"; String each_element; FileReader data = new FileReader("data.txt"); Scanner sc = new Scanner(data); sc.useDelimiter(separator); for (int i = 0; i < 8; i++) { each_element = sc.next(); System.out.print(each_element + separator); } } }