java 文件读取 进度_java读取TXT文件并且显示打开进度,最后要逐行显示

展开全部

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.beans.*;

import java.io.*;

import java.util.List;

/**

* @author Hardneedl

*/

final class ProgressDemo extends JFrame {

public String getTitle() {return "ProgressDemo";}

static private final Dimension size = new Dimension(600,400);

public Dimension getPreferredSize() {return size;}

public Dimension getMaximumSize() {return size;}

public Dimension getMinimumSize() {return size;}

public Dimension getSize(){return size;}

private JTextArea textArea;

private JProgressBar bar;

private class ReadSwingWork extends SwingWorker{

private File file;

private JTextArea area;

private int pro=0;

private ReadSwingWork(File f, JTextArea area) {

file=f;

this.area=area;

}

protected String doInBackground() throws Exception {

FileInputStream fileReader=new FileInputStream(file);

int maxLen = fileReader.available();

byte buf[]=new byte[1];

String s = null;

while (fileReader.read(buf)!32313133353236313431303231363533e58685e5aeb931333332623962=-1) {

s = new String(buf);

publish(s);

setProgress( 100*(pro++)/maxLen );

}

fileReader.close();

return s;

}

protected void process(List chunks) {

for (String s:chunks)

area.append(s);

}

}

private class OpenFileAction extends AbstractAction{

private JFileChooser chooser;

private OpenFileAction() {

super("Open...");

}

public void actionPerformed(ActionEvent e) {

textArea.setText(null);

if(chooser==null){

chooser=new JFileChooser(".");

chooser.setDialogType(JFileChooser.OPEN_DIALOG);

chooser.setMultiSelectionEnabled(false);

chooser.setDialogTitle("open file");

}

if(chooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION){

File file=chooser.getSelectedFile();

if (file!=null){

SwingWorker work=new ReadSwingWork(file,textArea);

work.addPropertyChangeListener(new PropertyChangeListener(){

public void propertyChange(PropertyChangeEvent evt) {

if("progress".equals(evt.getPropertyName())){

bar.setValue((Integer) evt.getNewValue());

}

}

});

work.execute();

}

}

}

}

ProgressDemo() throws HeadlessException {

init();

attachListeners();

doLay();

}

private void init(){

textArea=new JTextArea();

bar=new JProgressBar(0,100);

}

private void attachListeners(){

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

}

private void doLay(){

final Container container = getContentPane();

container.add(new JButton(new OpenFileAction()),BorderLayout.NORTH);

container.add(new JScrollPane(textArea),BorderLayout.CENTER);

container.add(bar,BorderLayout.SOUTH);

pack();

setVisible(true);

}

public static void main(String...args) {

System.setProperty("swing.defaultlaf","com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

SwingUtilities.invokeLater(

new Runnable(){

public void run() {

new ProgressDemo();

}

}

);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值