我试图避免FileItem getInputStream()
,因为它会得到错误的编码,因为我需要一个FileInputStream
代替。有没有办法得到一个FileInputStream不使用这个方法?或者我可以将我的文件项转换为文件吗?
if (this.strEncoding != null && !this.strEncoding.isEmpty()) {
br = new BufferedReader(new InputStreamReader(clsFile.getInputStream(), this.strEncoding));
}
else {
// br = ?????
}
你可以试试
FileItem # getString(编码)
使用指定的编码将文件项的内容作为String返回。
这里可以使用write
方法。
File file = new File("/path/to/file");
fileItem.write(file);
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);
encoding通常是一个选项参数(然后存在一个没有编码的重载方法)。