文件上传并且保存到本地【网络编程实现】java
时间: 2023-08-05 08:07:40 浏览: 117
好的,您可以参考以下代码实现文件上传并保存到本地:
```java
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class FileServer {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,监听端口号为8888
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动,等待客户端连接...");
// 循环等待客户端连接
while (true) {
// 接收客户端连接请求,返回Socket对象
Socket socket = serverSocket.accept();
System.out.println("客户端已连接:" + socket.getInetAddress().getHostAddress());
// 获取输入流,读取客户端发送的文件数据
InputStream inputStream = socket.getInputStream();
// 创建输出流,将文件保存到本地
OutputStream outputStream = new FileOutputStream("D:\\test\\test.txt");
// 定义缓冲区,读取文件数据
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) != -1) {
// 将文件数据写入输出流
outputStream.write(buffer, 0, len);
}
// 关闭流
outputStream.close();
inputStream.close();
socket.close();
System.out.println("文件接收成功!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
客户端代码如下:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class FileClient {
public static void main(String[] args) {
try {
// 创建Socket对象,指定服务器地址和端口号
Socket socket = new Socket("127.0.0.1", 8888);
// 选择要上传的文件
File file = new File("D:\\test\\test.txt");
// 创建输入流,读取文件数据
InputStream inputStream = new FileInputStream(file);
// 获取输出流,将文件数据发送至服务器
OutputStream outputStream = socket.getOutputStream();
// 定义缓冲区,读取文件数据
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) != -1) {
// 将文件数据写入输出流
outputStream.write(buffer, 0, len);
}
// 关闭流
outputStream.close();
inputStream.close();
socket.close();
System.out.println("文件上传成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
注意:在执行代码前,需要先创建一个用于保存文件的文件夹(如本例中的D:\test)。
阅读全文