什么是相当于ImageIO的文件

时间:2014-07-30 15:15:27

标签: java file java-ee oracle-adf javax.imageio

大家好,所有的java专家。

我有这段代码我最终可以放在一起工作:(它主要是带有一点ADF代码的java)

public String upload(){
    UploadedFile myfile = this.getFile();

    FacesContext fctx = FacesContext.getCurrentInstance();
    ServletContext servletCtx =
        (ServletContext)fctx.getExternalContext().getContext();
    String imageDirPath = servletCtx.getRealPath("/");
    String nomdefichier = myfile.getFilename();
    String mimetype = nomdefichier.substring(nomdefichier.length() - 3);
    try {
        InputStream inputStream = myfile.getInputStream();
        BufferedImage input = ImageIO.read(inputStream);

        File outputFile =
            new File( System.getProperty("user.home") + File.separator + this.path + File.separator + nomdefichier);         
        ImageIO.write(input, mimetype, outputFile);

    } catch (Exception ex) {
        // handle exception
    }
    FacesMessage message =
        new FacesMessage(mimetype + "Successfully uploaded file " + nomdefichier +
                         " (" + myfile.getLength() + " bytes)" + mimetype);
    fctx.addMessage(null, message);

    return null;

}

此代码上传图片就好了。我真的想知道是否有一个等效于ImageIO.write的文件,以便我可以上传PDF,DOCX等。

提前感谢您的回复。

最好的问候。

Marc Arbor

2 个答案:

答案 0 :(得分:2)

您的代码的简化版本可以编写如下(省略一些与JSF相关的东西)。

InputStream in = myFile.getInputStream();
Files.copy(in, Paths.get(yourPath));

答案 1 :(得分:0)

您可以使用java.nio.file.Files类(自Java 1.7起)将字节数组或InputStream写入。

// Saving data from an inputstream to a file:
Files.copy(inputStream, targetPath, copyOptions...);

// Saving a byte array to a file:
Files.write(path, byteArray, openOptions...);