テキストファイルを読み取って、charごとに配列charに格納しようとしています。私のアプローチ(以下)では、初期の長さが100000のchar
配列を事前に定義しています(ここでの私の主な問題)。したがって、ファイルにその量より少ない文字が含まれている場合(それより多い文字がある場合にも問題が発生します)、配列にnullがあります。避けたい。テキストファイルに存在する文字の量を事前に決定する方法はありますか?または、ファイルをcharごとに保存するためのより良いアプローチはありますか?
char buf[] = new char[100000];
FileReader fr = new FileReader(filename);
BufferedReader br = new BufferedReader(fr);
br.read(buf);
for(int i = 0; i < buf.length; i++)
{
//Do stuff here
}
文字のArrayListを使用して、値を受け入れます。その後、ArrayListを次のように配列に変換します
char[] resultArray = list.toArray(new char[list.size()]);
次のように、br.read()の代わりにbr.readLine()を使用する必要があります。
String str;
while((str = br.readLine())!=null){
str.tocharArray();
}
代わりにスキャナーを使用してください!
私はスキャナーを使用して、charごとではなくline byで読み取り、それを文字列として格納します。本当にchar配列が必要な場合は、後で簡単に取得できます。
これは機能的に同じことをします:
String theString = "";
File file = new File("data.txt");
Scanner scanner = new Scanner(file);
theString = scanner.nextLine();
while (scanner.hasNextLine()) {
theString = theString + "\n" + scanner.nextLine();
}
char[] charArray = theString.toCharArray();
これの利点は、厄介な長さと連結ビジネスのすべてを処理するJavaのString型を利用できることです。また、String.toCharArray()メソッドはすでに組み込まれており、必要に応じて自動的にサイズ変更された配列を返します。