如何从java中的FileItem获取FileInputStream?

时间:2014-07-22 16:49:01

标签: java inputstream java-io fileitem

我正在尝试避免使用FileItem getInputStream(),因为它会得到错误的编码,因为我需要FileInputStream。有没有办法在不使用此方法的情况下获取FileInputStream?或者我可以将我的文件项目转换为文件吗?

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

3 个答案:

答案 0 :(得分:2)

你可以尝试

FileItem#getString(encoding)

  

使用指定的编码以字符串形式返回文件项的内容。

答案 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);

编码通常是一个选项参数(然后存在一个没有编码的重载方法)。