91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

Java文件讀取的進度條怎么實現

小億
96
2023-07-28 13:14:45
欄目: 編程語言

要實現Java文件讀取的進度條,可以使用多線程的方式來讀取文件,并在讀取過程中更新進度條。

以下是一個簡單的實現示例:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
public class FileReadProgressBar {
private JFrame frame;
private JProgressBar progressBar;
private JButton startButton;
public FileReadProgressBar() {
frame = new JFrame("File Read Progress");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 100);
progressBar = new JProgressBar(0, 100);
progressBar.setStringPainted(true);
startButton = new JButton("Start");
startButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
startButton.setEnabled(false);
progressBar.setValue(0);
new FileReadTask().execute();
}
});
frame.setLayout(new FlowLayout());
frame.add(progressBar);
frame.add(startButton);
frame.setVisible(true);
}
private class FileReadTask extends SwingWorker<Void, Integer> {
@Override
protected Void doInBackground() throws Exception {
File file = new File("path/to/file"); // 替換成實際的文件路徑
long fileSize = file.length();
long totalRead = 0;
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
while ((line = reader.readLine()) != null) {
totalRead += line.length();
int progress = (int) ((totalRead * 100) / fileSize);
publish(progress);
}
}
return null;
}
@Override
protected void process(java.util.List<Integer> chunks) {
int latestProgress = chunks.get(chunks.size() - 1);
progressBar.setValue(latestProgress);
}
@Override
protected void done() {
startButton.setEnabled(true);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new FileReadProgressBar();
}
});
}
}

在這個示例中,首先創建一個JFrame窗口,包含一個JProgressBar進度條和一個JButton按鈕。當點擊按鈕時,會創建一個FileReadTask的實例,并執行execute()方法來啟動多線程。

FileReadTask繼承SwingWorker類,覆寫doInBackground方法來執行文件讀取操作。在讀取的過程中,通過計算讀取的字節數占總文件大小的百分比來更新進度條。使用publish方法來將進度信息傳遞給process方法,再通過process方法來更新進度條的顯示。

在任務執行完成后,通過done方法來恢復按鈕的狀態。

注意:這只是一個簡單的示例,實際應用中可能需要更復雜的邏輯處理和錯誤處理。

0
乐至县| 洛浦县| 浦江县| 个旧市| 康乐县| 宜君县| 上林县| 明溪县| 台湾省| 永顺县| 关岭| 丹江口市| 鲜城| 隆回县| 屯留县| 隆昌县| 溧水县| 河池市| 托里县| 黄山市| 平昌县| 六枝特区| 廊坊市| 晋中市| 伊金霍洛旗| 达拉特旗| 江津市| 祥云县| 四川省| 汝南县| 临澧县| 昭平县| 南平市| 民丰县| 惠东县| 海宁市| 海原县| 闽侯县| 务川| 嵊泗县| 喜德县|