java 模拟文件下载

package test2;


import java.awt.Toolkit;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;


import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;


public class Download {


private JFrame jf;
private JProgressBar jpb;


/**
* 构造方法,用来初始化窗体
*/
public Download() {



}


public static void main(String[] args) throws IOException {


Download d = new Download();
File src = new File("F:\\天龙八部.mp4");
File path = new File("E:\\天龙八部.mp4");

d.sendFile(src, path);

}

/**
* 传输文件的方法
* @param src 要复制的原文件
* @param path 复制的目标目录
* @throws IOException 
*/
public void sendFile(File src,File path) throws IOException{

/*
* 创建窗体
*/
jf = new JFrame();
jpb = new JProgressBar();


// 获取当前屏幕尺寸
double width = Toolkit.getDefaultToolkit().getScreenSize().getWidth();// 1920
double height = Toolkit.getDefaultToolkit().getScreenSize().getHeight();// 1080


// 设置窗体尺寸
int kuan = 300;
int gao = 80;


// 设置窗体出现的位置,居中显示
int x = (int) ((width - kuan) / 2);
int y = (int) ((height - gao) / 2);


JFrame jf = new JFrame();// 实例化窗体对象
jf.setVisible(true);// 设置窗体显示
jf.setBounds(x, y, kuan, gao);// 设置窗体出现的位置和大小
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置窗体关闭后,停止JVM


JProgressBar jpb = new JProgressBar();// 创建进度条对象
jf.add(jpb);

/*
* 传输文件
*/
//输入流,读取文件
InputStream is = new FileInputStream(src);
//输出流,用来复制文件
OutputStream os = new FileOutputStream(path);

//原文件大小
long len = src.length();
//已复制的累加大小
double sum = 0;

//每次读取的字节大小
byte[] b = new byte[500];
int i = 0;
while((i=is.read(b))!=-1){


//累加已复制的大小
sum += i;
//计算已复制的百分比
int k = (int) (sum/len*100);
//显示到窗体中
jpb.setValue(k);
jf.setTitle("已复制了"+k+"%");

os.write(b, 0, i);
}

//弹出提示对话框
JOptionPane.showMessageDialog(jf, src.getName()+"已复制完成");
jf.dispose();//清除当前窗体

os.close();
is.close();
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值