Saya memiliki program Java yang berjalan dalam mode baris perintah. Saya ingin menampilkan bilah kemajuan, menunjukkan persentase pekerjaan yang dilakukan. Jenis progress bar yang sama akan Anda lihat menggunakan wget di bawah unix. Apakah ini mungkin?
java
command-line
progress-bar
g andrieu
sumber
sumber
Jawaban:
Saya telah menerapkan hal semacam ini sebelumnya. Ini bukan tentang java, tetapi karakter apa yang harus dikirim ke konsol.
Kuncinya adalah perbedaan antara
\n
dan\r
.\n
pergi ke awal baris baru. Tetapi\r
hanya carriage return - ini kembali ke awal dari baris yang sama.Jadi yang harus dilakukan adalah mencetak bilah kemajuan Anda, misalnya, dengan mencetak string
Pada centang berikutnya dari progress bar, timpa baris yang sama dengan bar yang lebih panjang. (karena kami menggunakan \ r, kami tetap di baris yang sama) Misalnya:
Apa yang harus Anda ingat untuk dilakukan, adalah ketika selesai, jika Anda baru saja mencetak
Anda mungkin masih memiliki beberapa sampah dari bilah progres di telepon. Jadi setelah Anda selesai dengan progress bar, pastikan untuk mencetak spasi yang cukup untuk menghapusnya dari baris. Seperti:
Semoga itu bisa membantu.
sumber
Ada https://github.com/ctongfei/progressbar , Lisensi: MIT
Bilah progres konsol sederhana. Penulisan progress bar sekarang berjalan di utas lainnya.
Menlo, Fira Mono, Source Code Pro atau SF Mono direkomendasikan untuk efek visual yang optimal.
Untuk font Consolas atau Andale Mono, gunakan
ProgressBarStyle.ASCII
(lihat di bawah) karena mesin terbang gambar kotak tidak selaras dengan benar dalam font ini.Maven:
Pemakaian:
sumber
step()
panggilan)? Apakah perpustakaan Anda berjalan secara tidak sinkron, sehingga memungkinkan jam untuk memperbarui? Bagaimana jika perpustakaan saya berjalan selama berhari-hari? Apakah ini menggunakan/r
strategi? Apakah itu akan menghasilkan keluaran multi-ratus megabyte?Saya menemukan kode berikut ini berfungsi dengan benar. Ini menulis byte ke buffer output. Mungkin itu metode menggunakan penulis seperti
System.out.println()
metode menggantikan kejadian\r
untuk\n
mencocokkan baris bawaan target berakhir (jika tidak dikonfigurasi dengan benar).sumber
Saya telah membuat persentase progres kosong untuk memeriksa file unduhan yang tersisa.
Saya memanggil metode ini secara berkala dalam unduhan file saya untuk memeriksa ukuran file total dan tetap dan menyajikannya
%
.Ini dapat digunakan untuk tujuan tugas lain juga.
Contoh uji dan keluaran
Uji dengan for loop
Metode ini dapat dengan mudah dimodifikasi:
sumber
C # Contoh tapi saya menganggap ini sama untuk
System.out.print
di Jawa. Jangan ragu untuk mengoreksi saya jika saya salah.Pada dasarnya, Anda ingin menulis
\r
karakter pelarian ke awal pesan Anda yang akan menyebabkan kursor kembali ke awal baris (Umpan Baris) tanpa pindah ke baris berikutnya.sumber
Sedikit metode refactored dan updated @ maytham-ɯɐɥʇʎɐɯ. Sekarang ini mendukung ukuran progress bar yang berubah-ubah:
sumber
Berikut ini adalah versi modifikasi dari di atas:
... dan utama:
sumber
Ini akan dimungkinkan dengan perpustakaan Java Curses. Ini yang saya temukan. Saya belum menggunakannya sendiri dan saya tidak tahu apakah itu cross-platform.
sumber
Saya menggunakan bilah kemajuan "memantul" ketika saya harus menunda alat untuk mencegah kondisi balapan.
sumber
Saya baru-baru ini menghadapi masalah yang sama, Anda dapat memeriksa kode saya: Saya telah menetapkannya untuk # pada 5%, yang dapat Anda modifikasi nanti.
sumber
sumber
Saya mengedit kode Eoin Campbell ke java dan menambahkan kemajuan terformat dalam persen.
Dan output:
sumber
sumber
sumber
masukkan deskripsi gambar di sini
sumber