Heim  >  Artikel  >  Java  >  So implementieren Sie den Fortschrittsbalken beim Lesen von Java-Dateien

So implementieren Sie den Fortschrittsbalken beim Lesen von Java-Dateien

PHPz
PHPznach vorne
2023-04-19 23:16:05861Durchsuche

Screenshot wird ausgeführt

So implementieren Sie den Fortschrittsbalken beim Lesen von Java-Dateien

Zugehöriger Code

Dateiklasse lesen#🎜 🎜 #

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

Testklasse

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

Kurze Beschreibung

Dieses Beispiel ist sehr einfach, es wird jedes Mal aktualisiert, wenn die Datei gelesen wird Der Fortschritt des Fortschrittsbalkens ähnelt der Akkumulation einer Zahl ab 0. Bei jeder Aktualisierung der Zahl wird auch der Fortschritt des Fortschrittsbalkens aktualisiert, bis die Akkumulation den Maximalwert erreicht. Stellen Sie es hier am besten proportional ein, da sonst der Fortschrittsbalken möglicherweise etwas seltsam aussieht. Bei größeren Dateien können Sie den Fortschritt auch von Zeit zu Zeit über Threads aktualisieren. Wenn Sie hier interessiert sind, können Sie es versuchen.

Ergänzung : Beachten Sie, dass das Pfadproblem hier relativ zum aktuellen Pfad ist. Um die Programmmigration zu erleichtern, ist es am besten, relative Pfade zu verwenden. Wenn Sie sich nicht sicher sind, können Sie einen absoluten Pfad verwenden, also die genaue Adresse der gesamten Datei auf der Festplatte.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den Fortschrittsbalken beim Lesen von Java-Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen