📄 filesendthread.java
字号:
package com.softfz.jn0708.thread;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import com.softfz.jn0708.srcpackage.FilePath;
import com.softfz.jn0708.srcpackage.SrcPackage;
/**
* 文件发送线程类
* @author admin
*
*/
public class FileSendThread extends Thread {
private Socket CSocker;
private BufferedOutputStream bos;
private BufferedInputStream bis;
private String fUNo;
private String tUNo;
private ClientReceiveThread clientThread;
private long count =0 ;
private long tembyte =0;
/**
* 发送文件线程构造
* @param fromUNo 发送人编号
* @param toUNo 接收人编号
* @param fileSendSocket 文件接收人 socket
*/
public FileSendThread(String fUNo, String tUNo, Socket CSocker,ClientReceiveThread clientThread) {
this.CSocker = CSocker;
this.fUNo = fUNo;
this.tUNo = tUNo;
this.clientThread = clientThread;
try {
bis = new BufferedInputStream(new FileInputStream(FilePath.FileSendPath));
bos = new BufferedOutputStream(CSocker.getOutputStream());
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
/**
* 线程run()方法
*/
public void run() {
byte[] buf = new byte[1024];
int len = 0;
try {
while ((len = bis.read(buf)) != -1) {
count= count +1;
tembyte = count*buf.length;
int tmp = (int) ((tembyte*100)/Long.parseLong(FilePath.proLong));
clientThread.getProbar().setValue(tmp);
bos.write(buf, 0, len);
bos.flush();
}
System.out.println("文件发送结束");
// 发文件结束包
SrcPackage fileEndPackage = new SrcPackage();
fileEndPackage.setFrom(fUNo);
fileEndPackage.setTo(tUNo);
fileEndPackage.setType(SrcPackage.FILEEND_TYPE);
fileEndPackage.setData(null);
clientThread.getOos().writeObject(fileEndPackage);
System.out.println("关闭流");
bis.close();
bos.close();
CSocker.close();
} catch (IOException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -