文件管理 · 2023年11月29日

java文件进度条|关于Java中进度条的问题

① java中的文件上传进度条原理是什么哈

一般来说,上传也好,下载也好,都要用到JavaI/O。而计算进度的原理,不就是已经传输的大小与总大小的比值嘛。这样就简单了,就拿最基本的OutputStream来说,它的基本的写出方法为void write(byte[] b) ,实际上写出的过程不就是通过InputStream循环读,然后OutputStream循环写嘛。你只要事先通过File类取得文件的总大小,然后在读入或写出的循环里加一个简单的进度计算的步骤,每读取或写出一次,就将已传输大小增加b.length,求出比值,更新进度条。具体的计算间隔,可以根据循环次数或时间间隔来定。

② Java中如何实现进度条效果

核心代码如下: timer = new Timer(DEFAULT_TIMEOUT, new ActionListener() { public void actionPerformed(ActionEvent evt) { if (!uploadThread.isAlive()) { timer.stop(); boolean isSuccess = false; // StringBuffer serverOutMsg = // uploadThread.getServerOutput(); if (uploadThread.getServerOutput().length() == 0) { JOptionPane.showMessageDialog(JUploadPanel.this, "上传完毕"); filePanel.removeAll(); isSuccess = true; } else { // JOptionPane.showMessageDialog(JUploadPanel.this, "上传" + uploadThread.getTotalFileCount() + "个文件,失败" + uploadThread.getFailureCount() + "个,请查看日志。"); JOptionPane.showMessageDialog(JUploadPanel.this, "上传失败,请重新登录后继续上传。"); } uploadThread.close(); uploadThread = null; // set progress bar to 0%. progress.setString(null); progress.setValue(0); // set stop button disabled stop.setEnabled(false); if (!isSuccess) { remove.setEnabled(true); removeAll.setEnabled(true); upload.setEnabled(true); } browse.setEnabled(true); } } }); timer.start();基本上就是线程控制progress.setValue,value值就是进度条

③ java中如何在拷贝文件时加入进度条,进度条跟文件拷贝进度一致

我给你提供思路,自己去实现。1、你用的是SSH框架,spring有一个MultipartFile技术,支持单文件和多文件上传2、下载直接用BufferedInputStream+BufferedOutputStream去实现就可以了。这两个都是很好学的。挺简单的

④ 怎么做java语言进度条

在js中做一个遮罩层,当你点击的时候显示进度条,进度条读完之后再隐藏,以下有专两种方式,试试,望属采纳方法一: //开启遮罩 $.messager.progress({});或$.messager.progress({title: 'Please waiting',msg: 'Loading data…',text: 'PROCESSING…….' });//关闭遮罩$.messager.progress('close');方法二: //显示遮罩$("#标签ID").标签("loading", "数据加载中……")$("#dg").datagrid("loading", "数据加载中……");//隐藏遮罩 $("#dg").datagrid("loaded");

⑤ 关于Java中进度条的问题

importjava.awt.BorderLayout;importjava.awt.Cursor;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.beans.PropertyChangeEvent;importjava.beans.PropertyChangeListener;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.InputStream;importjava.io.OutputStream;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JProgressBar;importjavax.swing.SwingWorker;{=1L;;privateJButton;privateTasktask;publicBar(Stringtitle){(title);setLayout(newBorderLayout());progressBar=newJProgressBar(0,100);progressBar.setValue(0);progressBar.setStringPainted(true);add(progressBar,BorderLayout.CENTER);=newJButton("拷贝");.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){start();.setEnabled(false);}});add(,BorderLayout.EAST);}classTaskextendsSwingWorker<Void,Void>{@OverridepublicVoiddoInBackground(){setProgress(0);Filefile=newFile("aa.mp3");longsize=file.length();byte[]bts=newbyte[1024*10];intlength=0;longcLength=0;try{InputStreamstream=newFileInputStream(file);OutputStreamos=newFileOutputStream(newFile("a.mp3"));while((length=stream.read(bts))>0){os.write(bts,0,length);cLength+=length;setProgress((int)(cLength*100/size));Thread.sleep(100);}os.close();stream.close();}catch(Exceptione1){e1.printStackTrace();}returnnull;}@Overridepublicvoiddone(){setTitle("拷贝完毕");Toolkit.getDefaultToolkit().beep();.setEnabled(true);setCursor(null);}}publicvoidpropertyChange(PropertyChangeEventevt){if("progress"==evt.getPropertyName()){intprogress=(Integer)evt.getNewValue();progressBar.setValue(progress);}}privatevoidstart(){task=newTask();task.addPropertyChangeListener(this);task.execute();setTitle("正在拷贝…");setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));}(){Barframe=newBar("Bar");frame.setAlwaysOnTop(true);frame.setSize(280,60);frame.setResizable(false);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}publicstaticvoidmain(String[]args){javax.swing.SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){createAndShowGUI();}});}}

⑥ JAVA怎么自己绘制进度条样式

package com.test;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Cursor;import java.awt.Dimension;import java.net.URL;import javax.swing.ImageIcon;import javax.swing.JLabel;import javax.swing.JProgressBar;import javax.swing.JWindow;/** * 程序启动模拟进度条 * 配置操作: * 1、更换url的test图片。图片的路径和.java文件一级 * 2、showFrame里,new出下一个JFrame * 3、main方法里的new可以带到上一个JFrame * @author Administrator * */public class ProgrammStart extends JWindow implements Runnable { Thread splashThread; //进度条更新线程 JProgressBar progress; //进度条 public ProgrammStart() { Container container=getContentPane(); //得到容器 setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); //设置光标 URL url = getClass().getResource("test.jpg"); //图片的位置 if(url != null){ container.add(new JLabel(new ImageIcon(url)),BorderLayout.CENTER); //增加图片 } progress = new JProgressBar(1,100); //实例化进度条 progress.setStringPainted(true); //描绘文字 progress.setString("程序加载中,请稍候……"); //设置显示文字 progress.setBackground(Color.white); //设置背景色 container.add(progress,BorderLayout.SOUTH); //增加进度条到容器上 Dimension screen = getToolkit().getScreenSize(); //得到屏幕尺寸 pack(); //窗口适应组件尺寸 setLocation((screen.width-getSize().width)/2,(screen.height-getSize().height)/2); //设置窗口位置 } public void start(){ this.toFront(); //窗口前端显示 splashThread=new Thread(this); //实例化线程 splashThread.start(); //开始运行线程 } public void run(){ setVisible(true); //显示窗口 try { for (int i=0;i<100;i++){ Thread.sleep(100); //线程休眠 progress.setValue(progress.getValue()+1); //设置进度条值 } } catch (Exception ex) { ex.printStackTrace(); } dispose(); //释放窗口 showFrame(); //运行主程序 } static void showFrame(){ //实例化JFrame对象 } public static void main(String[] args) { new ProgrammStart().start();}}

⑦ java多文件上传显示进度条

使用 apache fileupload ,spring MVC jquery1.6x , bootstrap 实现一个带进度条的多文件上传,由于fileupload 的局限,暂不能实现每个上传文件都显示进度条,只能实现一个总的进度条,效果如图:

packagecom.controller;importjava.util.List;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importorg.apache.commons.fileupload.FileItemFactory;importorg.apache.commons.fileupload.ProgressListener;importorg.apache.commons.fileupload.disk.DiskFileItemFactory;importorg.apache.commons.fileupload.servlet.ServletFileUpload;importorg.apache.log4j.Logger;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;importorg.springframework.web.bind.annotation.ResponseBody;importorg.springframework.web.servlet.ModelAndView;@Controller{Loggerlog=Logger.getLogger(FileUploadController.class);/***upload上传文件*@paramrequest*@paramresponse*@return*@throwsException*/@RequestMapping(value="/upload.html",method=RequestMethod.POST)publicModelAndViewupload(HttpServletRequestrequest,HttpServletResponseresponse)throwsException{finalHttpSessionhs=request.getSession();ModelAndViewmv=newModelAndView();booleanisMultipart=ServletFileUpload.isMultipartContent(request);if(!isMultipart){returnmv;}//Createafactoryfordisk-basedfileitemsFileItemFactoryfactory=newDiskFileItemFactory();//CreateanewfileuploadhandlerServletFileUploapload=newServletFileUpload(factory);upload.setProgressListener(newProgressListener(){publicvoipdate(longpBytesRead,longpContentLength,intpItems){ProcessInfopri=newProcessInfo();pri.itemNum=pItems;pri.readSize=pBytesRead;pri.totalSize=pContentLength;pri.show=pBytesRead+"/"+pContentLength+"byte";pri.rate=Math.round(newFloat(pBytesRead)/newFloat(pContentLength)*100);hs.setAttribute("proInfo",pri);}});Listitems=upload.parseRequest(request);//Parsetherequest//Processtheuploadeditems//Iteratoriter=items.iterator();//while(iter.hasNext()){//FileItemitem=(FileItem)iter.next();//if(item.isFormField()){//Stringname=item.getFieldName();//Stringvalue=item.getString();//System.out.println("thisiscommonfeild!"+name+"="+value);//}else{//System.out.println("thisisfilefeild!");//StringfieldName=item.getFieldName();//StringfileName=item.getName();//StringcontentType=item.getContentType();//booleanisInMemory=item.isInMemory();//longsizeInBytes=item.getSize();//FileuploadedFile=newFile("c://"+fileName);//item.write(uploadedFile);//}//}returnmv;}/***process获取进度*@paramrequest*@paramresponse*@return*@throwsException*/@RequestMapping(value="/process.json",method=RequestMethod.GET)@ResponseBodypublicObjectprocess(HttpServletRequestrequest,HttpServletResponseresponse)throwsException{return(ProcessInfo)request.getSession().getAttribute("proInfo");}classProcessInfo{publiclongtotalSize=1;publiclongreadSize=0;publicStringshow="";publicintitemNum=0;publicintrate=0;}}