Rumah > Java > javaTutorial > Bagaimana untuk melaksanakan bar kemajuan pembacaan fail Java

Bagaimana untuk melaksanakan bar kemajuan pembacaan fail Java

PHPz
Lepaskan: 2023-04-19 23:16:05
ke hadapan
942 orang telah melayarinya

Jalankan tangkapan skrin

Bagaimana untuk melaksanakan bar kemajuan pembacaan fail Java

Kod berkaitan

Baca kelas fail

package test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.ProgressMonitor;
import javax.swing.ProgressMonitorInputStream;

public class ReadFile{
	private File target, output;
	
	public ReadFile(File target, File output) {
		this.target = target;
		this.output = output;
	}
	
	/*
	 * 这里需要设置 ProgressMonitor对象的最小值和最大值。
	 * 当超过最大值时,进度条正好结束。
	 * 需要手动调用 setProgress 方法,更新进度。
	 * 更新的方法有很多种,可以自己计算相对大小,这里我取一个简单的方法。
	 * 直接利用文件的大小并进行累加。
	 * */
	public void readFile() throws InterruptedException {
		byte[] b = new byte[124];
		try(
			FileInputStream in = new FileInputStream(target);
			FileOutputStream out = new FileOutputStream(output);
			ProgressMonitorInputStream pmi = new ProgressMonitorInputStream(null, "读取", in)) {
			ProgressMonitor monitor = pmi.getProgressMonitor();
			monitor.setMinimum(0);
			monitor.setMaximum((int) (target.length()));
			int progress = 124;
			int sum = 0;
			while (in.read(b) != -1) {
				out.write(b);
			//此处代码在控制台打印当前源文件。
			//	String s = new String(b);
			//	System.out.println(s);
				Thread.sleep(1000);
				sum += progress;
				monitor.setProgress(sum);
			}
		} catch(IOException e) {
			e.printStackTrace();
		}
	}
}
Salin selepas log masuk

Ujian kelas

package test;

import java.io.File;

public class Test {
	public static void main(String[] args) throws InterruptedException {
		ReadFile read = new ReadFile(new File("./src/test/ReadFile.java"), new File("./output.java"));
		read.readFile();
	}
}
Salin selepas log masuk

Penerangan ringkas

Contoh ini sangat mudah, iaitu setiap kali fail dibaca, kemajuan bar kemajuan dikemas kini, yang serupa dengan menambahkan nombor daripada 0 , setiap kali nombor itu dikemas kini, kemajuan bar kemajuan juga dikemas kini sehingga ia terkumpul kepada nilai maksimum. Adalah lebih baik untuk menetapkannya secara berkadar di sini, jika tidak bar kemajuan mungkin agak pelik. Untuk fail yang lebih besar, anda juga boleh menggunakan benang untuk mengemas kini kemajuan sekali-sekala Jika anda berminat di sini, anda boleh mencubanya.

Tambahan : Sila ambil perhatian bahawa masalah laluan di sini adalah relatif kepada laluan semasa. Sebaiknya gunakan laluan relatif untuk memudahkan penghijrahan program. Jika anda tidak pasti, anda boleh menggunakan laluan mutlak, iaitu alamat tepat bagi keseluruhan fail pada cakera.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan bar kemajuan pembacaan fail Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan