1

getInputStream()間違ったエンコーディングを取得するため、 FileItem を回避しようとしています。そのためには、FileInputStream代わりにが必要です。このメソッドを使用せずに FileInputStream を取得する方法はありますか? または、ファイルアイテムをファイルに変換できますか?

if (this.strEncoding != null && !this.strEncoding.isEmpty()) {
    br = new BufferedReader(new InputStreamReader(clsFile.getInputStream(), this.strEncoding));
} 
else {
    // br = ?????
}
4

3 に答える 3

2

あなたが試すことができます

FileItem#getString(エンコーディング)

指定されたエンコーディングを使用して、ファイル アイテムの内容を文字列として返します。

于 2014-07-22T16:53:31.967 に答える
0

InputStream はバイナリ データ、バイトです。これらのバイトのエンコーディングを指定して、テキストに変換する必要があります。

Java は内部的に Unicode を使用してすべてのテキスト スクリプトを表します。テキストの場合、String/char/Reader/Writer を使用します。

バイナリ データの場合、byte[]、InputStream、OutputStream。

したがって、次のようなブリッジ クラスを使用できますInputStreamReader

String encoding = "UTF-8"; // Or "Windows-1252" ...
BufferedReader in = new BufferedStream(
    new InputStreamReader(fileItem.getInputStream(),
                          encoding));

または、バイトを読み取る場合:

String s = new String(bytes, encoding);

多くの場合、エンコーディングはオプション パラメータです (エンコーディングなしでオーバーロードされたメソッドが存在します)。

于 2014-07-22T17:20:27.830 に答える
0

writeここでメソッドを使用できます。

File file = new File("/path/to/file");
fileItem.write(file);
于 2014-07-22T16:52:59.323 に答える