传输文本文件的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. 文件传输流程
- 客户端运行
Client
类,连接到服务端。 - 客户端读取本地文件内容并发送给服务端。
- 服务端运行
Server
类,监听客户端请求。 - 服务端接收到客户端发送的文件,并保存到本地。
- 客户端和服务端关闭连接。
4. 流程饼状图
pie
title 文件传输流程
"连接" : 30
"发送文件" : 30
"接收文件" : 30
"关闭连接" : 10
5. 总结
以上是使用Java Socket传输文本文件的示例代码。通过建立客户端和服务端的连接,客户端可以将本地文件发送给服务端,服务端接收并保存文件。你可以根据实际需求对代码进行修改和扩展,实现更复杂的功能,如传输其他类型的文件、传输文件夹等。
需要注意的是,以上示例只适用于传输文本文件,对于二进制文件(如图片、音频等),需要使用字节流进行读写操作。