1

我试图避免使用 FileItem getInputStream(),因为它会得到错误的编码,因为我需要一个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 回答