在jar之外复制二进制文件

时间:2013-03-21 21:34:41

标签: java jar exe java.util.scanner getresource

我在我的jar文件中打包了一个exe,我试图将它复制到临时位置,以便我可以使用Desktop.browse()运行它,为此我设置了一个带有输入流构造函数的扫描程序class.getResourceAsStream,然后用printwriter将所有内容写入文件。发生的问题表明exe无效。我认为这是由于一些二进制数据丢失。如果有人可以提供帮助,请发表评论。

    Scanner sc = new Scanner(ClassBuilder.class.getResourceAsStream("jd-gui.exe"));
    File copy = new File("C://users//Owner//Desktop//java//jd-gui.exe");
    copy.createNewFile();
    PrintWriter writer = new PrintWriter(copy);

    while(sc.hasNextLine())
        writer.println(sc.nextLine());

    writer.flush();
    writer.close();
    sc.close();

    Desktop.getDesktop().browse(copy.toURI()); 

1 个答案:

答案 0 :(得分:5)

如前所述,使用二进制数据流。 Commons io使复制流变得容易。类似的东西:

InputStream in = getClass().getResourceAsStream("jd-gui.exe");
OutputStream out = new FileOutputStream("jd-gui.exe");
IOUtils.copy(in, out);