[java]代码库
package FileTran;
import java.io.EOFException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.List;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import MyFrame.Myframe;
public class FileMsgthread extends Thread {
private Myframe mf;
private Socket sock = null;
private ObjectInputStream in = null;
private byte[] b = null;
private OutputStream out = null;
private String msg;
private JFileChooser jfc;
private File fi;
public FileMsgthread(Socket sock, Myframe mf) {
this.sock = sock;
this.mf = mf;
msg = mf.getPane().getContendjt().getText();
}
public void run() {
try {
in = new ObjectInputStream(this.sock.getInputStream());
List li = null;
List lb = null;
li = (List) this.in.readObject();
lb = li.subList(0, li.size() - 2);
int len = (Integer) li.get(li.size() - 2);
String file = (String) li.get(li.size() - 1);
int judge=JOptionPane.showConfirmDialog(mf, "正在接受用户 "
+ this.sock.getInetAddress().getHostAddress()
+ " 发送文件:\n"+file);
if(judge==0){
this.jfc=new JFileChooser();
this.fi=new File(file);
this.jfc.setSelectedFile(this.fi);
this.jfc.showSaveDialog(mf);
this.fi=this.jfc.getSelectedFile();
this.out = new FileOutputStream(this.fi);
}else{
return;
}
this.mf.getPane().getContendjt().setText(msg + "接收中.......\n");
int i = 0;
while (i < lb.size()) {
b = (byte[]) lb.get(i);
if (i == (lb.size() - 1)) {
out.write(b, 0, len);
out.flush();
break;
}
out.write(b);
out.flush();
i++;
}
this.mf.getPane().getContendjt().setText(msg + "文件接收完毕.....\n");
} catch (FileNotFoundException f) {
JOptionPane.showMessageDialog(null, "文件存储有误...");
return;
} catch (EOFException eof) {
JOptionPane.showMessageDialog(null, "无法接收文件...");
} catch (IOException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
JOptionPane.showMessageDialog(null, "输入有误...");
return;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
JOptionPane.showMessageDialog(null, "无法找到文件");
return;
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (sock != null) {
try {
sock.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (this.out != null) {
try {
this.out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
//源代码片段来自云代码http://yuncode.net