私は自分のWebサイトからいくつかのレポートをダウンロードするために別の会社の図書館を使っています。これらのレポートをファイルに書き込む前に解析する必要があります。なぜなら、これらのレポートが特定の基準に合致していれば無視したいからです。Java.io.Readerから意味のあるテキストを取得する
問題は、それらのメソッドdownload()はjava.io.Readerを返します。利用できる唯一の方法は、
int read(char[] cbuf);
です。この返された配列を印刷すると意味のない文字が表示されます。どのキャラクタセットを使用しているのかをバイト配列に変換することができますが、どのように行うのかわかりません。私は
//retrievedFile is my Reader object
char[] cbuf = new char[2048];
int numChars = retrievedFile.read(cbuf);
//I've tried other character sets, too
new String(cbuf).getBytes("UTF-8");
を試みたと私はそれが仕事をしたりしません場合、私は確実に知ることができないので、より便利なリーダーにダウンキャストすることが怖いです。助言がありますか?
私はそれが「無意味な文字」出力しますと言うEDIT
、私はそれはジョンスキートによって与えられた例のようになっていることを意味するものではありません。今は自分のマシンではないので、説明するのは本当に難しいですが、エンコードの問題だと思います。文字は、レポートの見た目に似た凹みや構造を持っているようです。私は火曜日に戻ってすぐにこれらの提案を試してみます(私はインターンだけなので、遠隔の口座などを設定することに悩まされていません)。
'BufferedReader'を試しましたか?それがうまくいかない理由はありません... – fge
'System.out.print(cbuf [i])'がi = 0,1,2 ..のためにあなたにガベージを与えた場合、他の会社のlibに問題があります。またはあなたはそれをうまく構成していない。 –