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

Bagaimana untuk melaksanakan bar kemajuan pembacaan fail Java

PHPz
PHPzke hadapan
2023-04-19 23:16:05908semak imbas

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();
		}
	}
}

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();
	}
}

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam