2

我有一个 exe 打包在我的 jar 文件中,我试图将它复制到一个临时位置,以便我可以使用它来运行它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()); 
4

1 回答 1

5

如前所述,将流用于二进制数据。Commons io 使复制流变得容易。就像是:

InputStream in = getClass().getResourceAsStream("jd-gui.exe");
OutputStream out = new FileOutputStream("jd-gui.exe");
IOUtils.copy(in, out);
于 2013-03-21T22:28:28.103 回答