>". Isunya ialah output tidak diubah hala seperti yang dimaksudkan. Penyelesaiannya ialah"/> >". Isunya ialah output tidak diubah hala seperti yang dimaksudkan. Penyelesaiannya ialah">

Rumah >Java >javaTutorial >Bagaimana untuk Mengalihkan Keluaran Secara Berkesan Apabila Melaksanakan Skrip Shell menggunakan Runtime Java?

Bagaimana untuk Mengalihkan Keluaran Secara Berkesan Apabila Melaksanakan Skrip Shell menggunakan Runtime Java?

Susan Sarandon
Susan Sarandonasal
2024-10-24 08:24:29693semak imbas

How to Effectively Redirect Output When Executing Shell Scripts using Java's Runtime?

Melaksanakan Skrip Shell dengan Output Diubah Hala menggunakan Runtime Java

Apabila cuba untuk melaksanakan skrip shell dengan kaedah Runtime.exec() Java, output pengalihan mungkin tidak berfungsi seperti yang dimaksudkan. Isu ini timbul apabila pengendali ubah hala >> digunakan dalam skrip.

Masalah:

Process p = Runtime.getRuntime().exec("sh somescript.sh >> out.txt");

Walaupun skrip berjaya dilaksanakan, output tidak akan dialihkan ke fail yang ditentukan dan fail itu sendiri akan kekal tidak dibuat.

Penyelesaian:

Untuk mengubah hala output dengan berkesan, adalah perlu untuk memanfaatkan kelas ProcessBuilder Java:

ProcessBuilder builder = new ProcessBuilder("sh", "somescript.sh");
builder.redirectOutput(new File("out.txt"));
builder.redirectError(new File("out.txt"));
Process p = builder.start(); // may throw IOException

Penjelasan:

Dengan menggunakan ProcessBuilder, anda boleh mengkonfigurasi pengalihan strim stdout dan stderr secara bebas. Kaedah redirectOutput() dan redirectError() membolehkan anda menentukan fail untuk ubah hala output.

Perhatikan bahawa jika fail "out.txt" tidak wujud, ia akan dibuat secara automatik. Jika ia sudah wujud, kandungan sedia ada akan ditimpa.

Atas ialah kandungan terperinci Bagaimana untuk Mengalihkan Keluaran Secara Berkesan Apabila Melaksanakan Skrip Shell menggunakan Runtime Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn