⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 receivefile.java

📁 用java开发的QQ管理系统
💻 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 + -