2013-03-21 80 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

相關問題