日期:2014-05-17  浏览次数:20762 次

java怎么根据二进制文件流映射到File 呢?
我现在遇到这样一个问题,前端上传的excel文件被flex给映射成了一个二进制流数组 byte[]这样的,而我拿到这个byte[]之后呢,又要传到后台,后台的java方法是 File 的参数接受的,所以他这个byte[]数组怎么能映射到File又不需要临时文件呢?
------解决方案--------------------
那你可以把byte[] 写入一个文件,然后new File吧
------解决方案--------------------
processImportData(final File file)
这个设计接口有问题啊,为什么不是
processImportData(final InputStream inputStream)

不生成临时文件没办法传参
------解决方案--------------------
FileOutputStream?fstream?,这个应该也的关闭
------解决方案--------------------
public static File getFileFromBytes(byte[] b, String outputFile) ...{
        BufferedOutputStream stream = null;
        File file = null;
        try ...{
            file = new File(outputFile);
            FileOutputStream fstream = new FileOutputStream(file);
            stream = new BufferedOutputStream(fstream);
            stream.write(b);
        } catch (Exception e) ...{
            e.printStackTrace();
        } finally ...{
            if (stream != null) ...{
                try ...{
                    stream.close();
                } catch (IOException e1) ...{
                    e1.printStackTrace();
                }
            }
        }
        return file;
    }
------解决方案--------------------
引用:
Quote: 引用:

public static File getFileFromBytes(byte[] b, String outputFile) ...{
        BufferedOutputStream stream = null;
        File file = null;
        try ...{
            file = new File(outputFile);
            FileOutputStream fstream = new FileOutputStream(file);
            stream = new BufferedOutputStream(fstream);
            stream.write(b);
 &nbs