📄 receivefile.java
字号:
package com.zlf.qqclient.filetransfer;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JTextPane;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.SimpleAttributeSet;
import com.zlf.qqclient.utils.Public;
import com.zlf.qqclient.utils.QQUtils;
/**
* 文件接收线程
* @author zlf
*
*/
public class ReceiveFile extends Thread {
private ServerSocket server = null;
private Socket socket = null;
private BufferedInputStream br = null;
private BufferedOutputStream bw = null;
private FileOutputStream fos = null;
private JTextPane textContent;// 内容显示
private long size = 0;
private String fileName;
/**
*
* @param fileName 保存文件名
* @param textContent 显示面板
*/
public ReceiveFile(String fileName, JTextPane textContent){
this.fileName = fileName;
this.textContent = textContent;
Public.myprogressbar.setVisible(true);
}
/**
*
* @param port 端口
* @param fileName 文件名
* @return
*/
public boolean ready(int port, String fileName){
try {
server = new ServerSocket(port);
socket = server.accept();
br = new BufferedInputStream(socket.getInputStream());
bw = new BufferedOutputStream(socket.getOutputStream());
fos = new FileOutputStream(fileName);
return true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
/**
*
*
*/
public void service(){
byte[] buf = new byte[1024];
try {
int len = br.read(buf);
while(len != -1){
if(buf[0] == -1.19){
size = len+size;
fos.write(buf,1, len-1);
Public.myprogressbar.setValue(100);
break;
}
size = len+size;
Public.myprogressbar.setValue(buf[0]);
Public.lblrate.setText(String.valueOf(buf[0])+"%");
fos.write(buf,1, len-1);
len = br.read(buf);
}
Public.myprogressbar.setVisible(false);
AttributeSet set = new SimpleAttributeSet();
textContent.getDocument().insertString(
textContent.getDocument().getLength(),
QQUtils.getCurDate()+":"+"\n文件 "+fileName+" 接收完毕!\n", set);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadLocationException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
public void close(){
try {
if(br != null){
br.close();
br = null;
}
if(bw != null){
bw.close();
bw = null;
}
if(fos != null){
fos.close();
fos = null;
}
if(socket != null){
socket.close();
socket = null;
}
if(server != null){
server.close();
server = null;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void run() {
if(ready(9988, fileName)){
service();
close();
this.interrupt();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -