بعد التحقق من الكثير من المعلومات ، انقلبت تقريبًا عبر رمز مصدر Java. تنفذ عملية Java دفق إدخال واحد ودفقان للإخراج (نسبة إلى البرامج الخارجية). عندما يكون لدفقات الإخراج اثنين إخراج المحتوى ولا يقوم Executor Java بمسح دفق الإخراج في الوقت المناسب ، سيتم حظر العملية.
لقد نشرت الآن الرمز ، على أمل مساعدة الأقران المحتاجين:
انسخ الرمز كما يلي:/**
* PDF إلى وظيفة SWF
* param مسار الإدخال ومسار ملف الإخراج
* param inputFilename أدخل اسم الملف
* param outputFilename اسم ملف الإخراج
* ملف RETURN تم إنشاء ملف SWF
*/
ملف ثابت خاص TOSWF (String SourceFile ، String DestFile ، String Command) {
long begintime = system.nanotime () ؛
RunTime rt = runtime.getRuntime () ؛
يحاول {
عملية العملية = rt.exec (command) ؛
inputStream النهائي isNormal = process.getInputStream () ؛
موضوع جديد (جديد RunNable () {
تشغيل الفراغ العام () {
BufferedReader BR = جديد BufferedReader (New InputStreamReader (Isnormal)) ؛
StringBuilder buf = new StringBuilder () ؛
خط السلسلة = فارغ ؛
يحاول {
بينما ((line = br.readline ())! = null) {
buf.append (line + "/n") ؛
}
} catch (ioException e) {
E.PrintStackTrace () ؛
}
System.out.println ("نتيجة الإخراج هي:" + buf) ؛
}
}). start () ؛
inputStream iserror = process.geterRorSstream () ؛
BufferedReader BR2 = جديد BufferedReader (New InputStreamReader (ISERROR)) ؛
StringBuilder buf = new StringBuilder () ؛
خط السلسلة = فارغ ؛
بينما ((line = br2.readline ())! = null) {
buf.append (line + "/n") ؛
}
System.out.println ("إخراج الخطأ هو:" + buf) ؛
يحاول {
process.WAITFOR () ؛
} catch (InterruptedException e) {
E.PrintStackTrace () ؛
}
} catch (ioException e) {
E.PrintStackTrace () ؛
}
endtime طويل = system.nanotime () ؛
System.out.println ("to swf time يستغرق:" + (endtime - begintime) / 1000000000 + "Seconds" + sourceFile) ؛
إرجاع ملف جديد (DestFile) ؛
}