一个读文件的进度条.txt

来自「当读取一个大文件的时候」· 文本 代码 · 共 80 行

TXT
80
字号
/** 
* @(#) TestProgressBar.java 
* 
* Copyright 2004 Opensource Develop Team. All rights reserved. 
*/ 

// package 
package com.opensource.progressbar; 

// import classes 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.FileInputStream; 
import java.io.InputStream; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.ProgressMonitorInputStream; 

/** 
* 当读取一个大文件的时候,需要显示一个进度条提示用户还有多少要读取和已经 
* 读取了多少内容。 
* 
* @author ODT 
* @version 1.0 01/05/2004 
* @since JDK 1.3 
*/ 


public class TestProgressBar  
{ 
     public static void main(String[] args)  
     { 
           // 创建一个有button的frame 
           final JFrame f = new JFrame("Sample"); 
           f.getContentPane().setLayout(new FlowLayout()); 
           JButton b = new JButton("Press me"); 
           f.getContentPane().add(b); 
           f.pack(); 

           // set up the file read action 
           b.addActionListener(new ActionListener()  
           { 
                 public void actionPerformed(ActionEvent e)  
                 { 
                       // 当button按下的时候开始一个线程去读取文件。 
                       // 因为我们需要一个空闲的线程去更新绘制progress monitor 
                       new Thread()  
                       { 
                             public void run()  
                             { 
                                   try  
                                   { 
                                         // 打开一个文件,封装进ProgressMonitorInputStream 
                                         InputStream in = new FileInputStream("D:\\Java projects\\mail.txt"); 
                                         ProgressMonitorInputStream pm =  
                                               new ProgressMonitorInputStream(f,"Reading the big file",in); 
                                         // 读文件。如果需要很长时间,progress monitor将出现。 
                                         int c; 
                                         while((c=pm.read()) != -1)  
                                         { 
                                               // do something 
                                         } 
                                         pm.close(); // 可以改写一个更好的错误处理 
                                   } 
                                   catch(Exception ex)  
                                   { 
                                         ex.printStackTrace(); 
                                   } 
                             } 
                       }.start(); 
                 } 
           });   
   
           // 显示frame 
           f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
           f.setVisible(true); 
     } 
} 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?