Rumah >Java >javaTutorial >Bagaimana untuk Mengendalikan Aliran Input/Output dengan Amanah dalam Proses Java?
Artikel ini meneroka selok-belok menggunakan aliran input dan output apabila bekerja dengan proses Java. Kami akan memberi tumpuan terutamanya pada menyelesaikan cabaran yang dihadapi dalam mengekalkan kefungsian strim ini.
Contoh kod yang disediakan menunjukkan senario di mana perintah boleh dimasukkan ke dalam bash shell dan output yang berbangkit ialah bergema. Walau bagaimanapun, isu timbul selepas bacaan awal, mengakibatkan ketidakbolehoperasian aliran keluaran berikutnya. Artikel ini bertujuan untuk menjelaskan isu ini dan mencadangkan penyelesaian.
Langkah pertama melibatkan pengubahsuaian coretan kod untuk memanfaatkan kelas ProcessBuilder, yang memudahkan pelaksanaan proses luaran. Kelebihan utamanya ialah keupayaan untuk mengubah hala aliran ralat standard proses kanak-kanak ke dalam output standardnya.
ProcessBuilder builder = new ProcessBuilder("/bin/bash"); builder.redirectErrorStream(true); Process process = builder.start();
Selain itu, gelung yang bertanggungjawab untuk membaca output standard proses terdedah kepada penggantungan, kerana ia tamat sepenuhnya apabila tamat -of-fail daripada pembaca. Untuk menyelesaikan masalah ini, teknik yang melibatkan garisan "ajaib" digunakan untuk menyempadani kesimpulan keluaran perintah shell.
while (scan.hasNext()) { String input = scan.nextLine(); writer.write("((" + input + ") && echo --EOF--) || echo --EOF--\n"); writer.flush(); line = reader.readLine(); while (line != null && ! line.trim().equals("--EOF--")) { System.out.println ("Stdout: " + line); line = reader.readLine(); } if (line == null) { break; } }
Adalah penting untuk mengakui batasan pendekatan ini :
Pindaan yang digariskan dalam artikel ini memberikan penyelesaian menyeluruh kepada cabaran yang dihadapi dalam mengekalkan kefungsian aliran input/output apabila bekerja dengan proses Java. Walaupun teknik ini mungkin mempunyai had tertentu, ia menawarkan cara yang boleh dipercayai untuk melaksanakan perintah shell dan mendapatkan semula outputnya secara berkala melalui tugas yang dijadualkan.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Aliran Input/Output dengan Amanah dalam Proses Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!