2

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()); 
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 に答える