2013-03-21 81 views
1

我有我的JAR文件中打包的exe文件之外,我试图将其复制到一个临时位置,这样我可以把它用Desktop.browse(),要做到这一点,我设置了扫描仪与运行输入流构造函数使用class.getResourceAsStream,然后用一个printwriter将全部写入文件。发生的问题表示该exe文件无效。我认为这是由于一些二进制数据丢失。如果有人能帮忙请发表评论。复制一个二进制文件,一个jar

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()); 
+0

请出示的代码。 Make short and sweet,only the pieces that matter:http://sscce.org/ – chr 2013-03-21 21:39:30

+1

扫描仪用于阅读文本。 PrintWriter用于写入文本。一个exe文件是一个二进制文件。使用流。 – 2013-03-21 21:45:41

+0

您需要将.exe文件复制到新位置? – Azad 2013-03-21 21:46:05

回答

4

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

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

它现在工作,我不使用commons api – 2013-03-21 23:53:05

相关问题