7

テキスト ファイルを読み込んでいて、それを char ごとに配列に格納しようとしています。char私のアプローチ (以下)は、初期長が 100000 の配列を事前定義します(ここでの主な問題)。そのため、ファイルに含まれる文字数がその量よりも少ない場合 (それよりも多い文字数の場合にも問題があります)、配列に null があります。それは避けたい。テキスト ファイルに存在する文字数を事前に決定する方法はありますか? または、ファイル char を 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
}
4

2 に答える 2

5

文字の ArrayList を使用して値を受け入れます。その後、ArrayListをArrayに変換します

 char[] resultArray = list.toArray(new char[list.size()]);

次のように、br.read() の代わりに br.readLine() を使用する必要があります。

String str;
while((str = br.readLine())!=null){
        str.tocharArray();
}
于 2012-10-31T05:23:36.170 に答える
4

代わりにスキャナーを使用してください。

スキャナーを使用して、文字ごとではなく行ごとに読み取り、それを文字列として保存します。本当に 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() メソッドはすでに組み込まれており、必要に応じて自動的にサイズ変更された配列を返します。

于 2012-10-31T05:26:42.003 に答える