Setelah memeriksa banyak informasi, saya hampir membalikkan kode sumber Java. Proses Java menjalankan satu aliran input dan dua aliran output (relatif terhadap program eksternal). Ketika dua aliran output memiliki output konten dan eksekutor Java tidak menghapus aliran output dalam waktu, proses akan diblokir.
Sekarang saya telah memposting kode, berharap dapat membantu rekan yang membutuhkan:
Salin kode sebagai berikut:/**
* PDF ke fungsi SWF
* Input jalur dan jalur file output @param
* @param inputFileName masukkan nama file
* @param outputFilename nama file output
* file @return yang dihasilkan file swf
*/
file statis private toswf (string sourceFile, string destfile, command string) {
long beginTime = system.nanoTime ();
Runtime rt = runtime.getRuntime ();
mencoba {
Proses proses = rt.exec (perintah);
inputStream final isNormal = process.getInputStream ();
utas baru (runnable baru () {
public void run () {
BufferedReader BR = BufferedReader baru (InputStreamReader baru (isNormal));
StringBuilder buf = new StringBuilder ();
Garis string = null;
mencoba {
while ((line = br.readline ())! = null) {
buf.append (line + "/n");
}
} catch (ioException e) {
e.printstacktrace ();
}
System.out.println ("Hasil output adalah:" + buf);
}
}). start ();
InputStream isError = process.getErrorStream ();
BufferedReader BR2 = BufferedReader baru (InputStreamReader baru (IsError));
StringBuilder buf = new StringBuilder ();
Garis string = null;
while ((line = br2.readline ())! = null) {
buf.append (line + "/n");
}
System.out.println ("Output kesalahan adalah:" + buf);
mencoba {
Process.waitfor ();
} catch (InterruptedException e) {
e.printstacktrace ();
}
} catch (ioException e) {
e.printstacktrace ();
}
Long endtime = System.nanoTime ();
System.out.println ("ke waktu SWF mengambil:" + (endtime - begintime) / 1000000000 + "detik" + sourceFile);
mengembalikan file baru (destfile);
}