📄 filets.java
字号:
package javanet;
import java.io.*;
import java.net.*;
import javax.swing.JFrame;
import java.awt.FileDialog;
import javax.swing.JOptionPane;
public class fileTS extends JFrame implements Runnable{
Socket socket;
PrintWriter pw;
DataInputStream dis;
JOptionPane prompt;
BufferedReader reader;
DataOutputStream dos;
BufferedReader br;
String filename;
String filepath;
public void run()
{
try {
sendFile(filename, filepath);
}
catch (NullPointerException ex) {
}
catch (IOException ex) {
}
}
public fileTS(String ip,JOptionPane prompt,String filename,String filepath) throws UnknownHostException, IOException {
socket = new Socket(ip, 8000);
this.prompt=prompt;
this.filename=filename;
this.filepath=filepath;
}
public void sendFile(String filename,String filepath) throws IOException,NullPointerException
{
pw = new PrintWriter(socket.getOutputStream());
reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw.println(filename);
pw.flush();
reader.readLine();//the first message
pw.print(0);
pw.flush();
int ans=reader.read();//the answer which tell client continue or not
if(!(ans==48))
{
prompt.showMessageDialog(this,"对方拒绝了你的请求","提示",0);
reader.close();
pw.close();
socket.close();
throw new IOException();
}
File localfile=new File(filepath);
long size=localfile.length();
pw.write(size+"\n");
pw.flush();
reader.read(); ////////////
//the codes below is to transfer file
transfer(localfile);
}
public void transfer(File filer)
{
try
{
dis = new DataInputStream(new FileInputStream(filer));
dos=new DataOutputStream(socket.getOutputStream());
DataInputStream dios=new DataInputStream(socket.getInputStream());
int bit;
while((bit=dis.read())!=-1)
{
dos.write(bit);
dos.flush();
dios.read();
}
pw.print(true);
pw.flush();
boolean res=reader.ready();
dis.close();
dos.close();
socket.close();
prompt.showMessageDialog(this,"文件传送成功!","提示",2);
}
catch (IOException ex) {ex.printStackTrace();}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -