我正在尝试避免使用FileItem getInputStream()
,因为它会得到错误的编码,因为我需要FileInputStream
。有没有办法在不使用此方法的情况下获取FileInputStream?或者我可以将我的文件项目转换为文件吗?
if (this.strEncoding != null && !this.strEncoding.isEmpty()) {
br = new BufferedReader(new InputStreamReader(clsFile.getInputStream(), this.strEncoding));
}
else {
// br = ?????
}
答案 0 :(得分:2)
答案 1 :(得分:0)
您可以在此处使用write
方法。
File file = new File("/path/to/file");
fileItem.write(file);
答案 2 :(得分: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);
编码通常是一个选项参数(然后存在一个没有编码的重载方法)。