Java服务器向客户端传文件,客户端可直接打开查看文件内容的代码
时间: 2024-03-17 21:40:42 浏览: 55
服务器向客户端传送文件之客户端
3星 · 编辑精心推荐
好的,请参考如下的Java代码实现:
服务器端代码:
```
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动,等待客户端连接...");
Socket socket = serverSocket.accept();
System.out.println("客户端已连接:" + socket.getInetAddress().getHostAddress());
// 读取文件内容
File file = new File("test.txt");
FileInputStream fileInputStream = new FileInputStream(file);
byte[] fileContent = new byte[(int) file.length()];
fileInputStream.read(fileContent);
// 发送文件内容
OutputStream outputStream = socket.getOutputStream();
outputStream.write(fileContent);
outputStream.flush();
// 关闭流和连接
fileInputStream.close();
outputStream.close();
socket.close();
serverSocket.close();
System.out.println("文件已发送,服务器已关闭。");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
客户端代码:
```
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8888);
System.out.println("已连接到服务器:" + socket.getInetAddress().getHostAddress());
// 接收文件内容
InputStream inputStream = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line = null;
StringBuilder stringBuilder = new StringBuilder();
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
String fileContent = stringBuilder.toString();
// 写入文件
File file = new File("test.txt");
FileWriter fileWriter = new FileWriter(file);
fileWriter.write(fileContent);
fileWriter.flush();
// 关闭流和连接
reader.close();
fileWriter.close();
inputStream.close();
socket.close();
System.out.println("文件已保存,客户端已关闭。");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以上代码实现了Java服务器向客户端传送文件,并且客户端可以直接打开查看文件内容。需要注意的是,这里的实现方式是通过字节流传输文件内容,如果需要传输大文件或者多个文件,可以考虑使用NIO或者Netty等更高效的方式。同时,在实际应用中还需要考虑网络安全和文件大小等因素。
阅读全文