传输文本文件的Java代码示例

在Java中,可以使用Socket来实现两台电脑之间的文本文件传输。下面是一个示例代码,介绍如何使用Socket传输文本文件。

1. 服务端代码

服务端负责接收来自客户端的文件并保存到本地。

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) {
        try {
            // 创建ServerSocket对象,指定端口号
            ServerSocket serverSocket = new ServerSocket(8888);
            
            // 监听客户端请求
            Socket socket = serverSocket.accept();
            
            // 获取输入流,读取客户端发送的文件
            InputStream inputStream = socket.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            
            // 从输入流中读取文件名
            String fileName = reader.readLine();
            
            // 创建文件输出流,写入接收到的文件
            FileOutputStream fileOutputStream = new FileOutputStream(fileName);
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fileOutputStream));
            
            // 读取文件内容并写入到输出流
            String line;
            while ((line = reader.readLine()) != null) {
                writer.write(line);
                writer.newLine();
            }
            
            // 关闭资源
            writer.close();
            fileOutputStream.close();
            reader.close();
            inputStream.close();
            socket.close();
            
            System.out.println("文件接收成功!");
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2. 客户端代码

客户端负责读取本地文件并发送给服务端。

import java.io.*;
import java.net.Socket;

public class Client {
    public static void main(String[] args) {
        try {
            // 创建Socket对象,指定服务端IP地址和端口号
            Socket socket = new Socket("127.0.0.1", 8888);
            
            // 获取输出流,向服务端发送文件
            OutputStream outputStream = socket.getOutputStream();
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
            
            // 读取本地文件
            File file = new File("myfile.txt");
            BufferedReader reader = new BufferedReader(new FileReader(file));
            
            // 将文件名发送给服务端
            writer.write(file.getName());
            writer.newLine();
            
            // 读取文件内容并发送给服务端
            String line;
            while ((line = reader.readLine()) != null) {
                writer.write(line);
                writer.newLine();
            }
            
            // 关闭资源
            reader.close();
            writer.close();
            outputStream.close();
            socket.close();
            
            System.out.println("文件发送成功!");
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3. 文件传输流程

  1. 客户端运行Client类,连接到服务端。
  2. 客户端读取本地文件内容并发送给服务端。
  3. 服务端运行Server类,监听客户端请求。
  4. 服务端接收到客户端发送的文件,并保存到本地。
  5. 客户端和服务端关闭连接。

4. 流程饼状图

pie
    title 文件传输流程
    "连接" : 30
    "发送文件" : 30
    "接收文件" : 30
    "关闭连接" : 10

5. 总结

以上是使用Java Socket传输文本文件的示例代码。通过建立客户端和服务端的连接,客户端可以将本地文件发送给服务端,服务端接收并保存文件。你可以根据实际需求对代码进行修改和扩展,实现更复杂的功能,如传输其他类型的文件、传输文件夹等。

需要注意的是,以上示例只适用于传输文本文件,对于二进制文件(如图片、音频等),需要使用字节流进行读写操作。