Java 文件传输客户端代码解析:逐行解释
这是一个 Java 代码,用于实现文件传输的客户端。下面是每一句代码的含义:
-
package 文件传送器;定义了一个名为'文件传送器'的包。 -
import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.net.Socket;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JOptionPane;引入需要使用的类。 -
public class FileTransferClient extends Socket {定义一个名为'FileTransferClient'的类,该类继承自Socket类。 -
private static final String SERVER_IP = '10.41.104.30';定义名为'SERVER_IP'的字符串变量,用于存储服务端IP地址。 -
private static final int SERVER_PORT = 8899;定义名为'SERVER_PORT'的整型常量,用于存储服务端端口号。 -
private Socket client;定义名为'client'的Socket类型变量。 -
private FileInputStream fis;定义名为'fis'的FileInputStream类型变量。 -
private DataOutputStream dos;定义名为'dos'的DataOutputStream类型变量。 -
public FileTransferClient() throws Exception {构造函数,用于连接服务端。 -
super(SERVER_IP, SERVER_PORT);调用父类Socket的构造函数,连接服务端。 -
this.client = this;将this赋值给client。 -
System.out.println('Cliect[port:' + client.getLocalPort() + '] 成功连接服务端');输出连接成功的提示信息。 -
public void sendFile() throws Exception {定义名为'sendFile'的方法,用于传输文件。 -
JFileChooser fc = new JFileChooser();创建一个JFileChooser实例。 -
int returnVal = fc.showOpenDialog(new JFrame());显示文件选择对话框。 -
if (returnVal == JFileChooser.APPROVE_OPTION) {如果用户选择了文件,执行下面的代码。 -
File file = fc.getSelectedFile();获取用户选择的文件。 -
try {尝试执行以下代码。 -
fis = new FileInputStream(file);创建一个FileInputStream实例,用于读取文件内容。 -
dos = new DataOutputStream(client.getOutputStream());创建一个DataOutputStream实例,用于向服务端发送数据。 -
dos.writeUTF(file.getName());向服务端发送文件名。 -
dos.flush();刷新缓冲区,将数据发送到服务端。 -
dos.writeLong(file.length());向服务端发送文件长度。 -
dos.flush();刷新缓冲区,将数据发送到服务端。 -
byte[] bytes = new byte[1024];创建一个长度为1024的字节数组。 -
int length = 0;定义一个名为'length'的整型变量,用于存储每次读取的字节数。 -
long progress = 0;定义一个名为'progress'的长整型变量,用于存储传输进度。 -
while ((length = fis.read(bytes, 0, bytes.length)) != -1) {dos.write(bytes, 0, length);dos.flush();progress += length;System.out.print('| ' + (100 * progress / file.length()) + '% |');} 读取文件内容,并将其发送到服务端。同时,输出传输进度。 -
JOptionPane.showMessageDialog(new JFrame(), '文件上传成功!');显示文件上传成功的提示信息。 -
} catch (Exception e) {如果出现异常,执行下面的代码。 -
e.printStackTrace();输出异常信息。 -
JOptionPane.showMessageDialog(new JFrame(), '文件上传失败!');显示文件上传失败的提示信息。 -
} finally {不管是否出现异常,都要执行下面的代码。 -
if (fis != null)fis.close();如果fis不为null,关闭它。 -
if (dos != null)dos.close();如果dos不为null,关闭它。 -
client.close();关闭客户端连接。 -
}结束try-catch-finally块。 -
}结束sendFile方法。 -
public static void main(String[] args) {主函数。 -
try {FileTransferClient client = new FileTransferClient();创建一个FileTransferClient实例,用于连接服务端。 -
client.sendFile();传输文件。 -
} catch (Exception e) {如果出现异常,执行下面的代码。 -
e.printStackTrace();输出异常信息。 -
JOptionPane.showMessageDialog(new JFrame(), '连接服务器失败!');显示连接服务器失败的提示信息。 -
}结束try-catch块。 -
}结束main方法。
原文地址: https://www.cveoy.top/t/topic/ocrR 著作权归作者所有。请勿转载和采集!