用java socket写一个 将本机的文件夹传到另外一台服务器上并创建文件夹
时间: 2023-05-12 17:03:40 浏览: 265
好的,这是一个比较常见的网络编程问题。你可以使用 Java 的 Socket 类来实现这个功能。具体步骤如下:
1. 创建一个 ServerSocket 对象,指定端口号,等待客户端连接。
2. 创建一个 Socket 对象,连接到服务器端口。
3. 获取本地文件夹中的文件列表,遍历文件列表,依次发送文件到服务器。
4. 在服务器端创建相应的文件夹,并将接收到的文件保存到该文件夹中。
以下是一个简单的 Java 代码示例:
```java
import java.io.*;
import java.net.*;
public class FileTransfer {
public static void main(String[] args) throws Exception {
// 创建服务器端的 ServerSocket 对象
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动,等待客户端连接...");
// 等待客户端连接
Socket socket = serverSocket.accept();
System.out.println("客户端已连接,开始传输文件...");
// 获取本地文件夹中的文件列表
File folder = new File("C:\\Users\\xxx\\Documents\\test");
File[] files = folder.listFiles();
// 创建输出流,发送文件
OutputStream os = socket.getOutputStream();
for (File file : files) {
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
fis.close();
}
os.close();
// 在服务器端创建相应的文件夹,并将接收到的文件保存到该文件夹中
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String folderName = br.readLine();
File newFolder = new File("C:\\Users\\xxx\\Documents\\" + folderName);
newFolder.mkdir();
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) != -1) {
FileOutputStream fos = new FileOutputStream(newFolder + "\\" + len + ".txt");
fos.write(buffer, 0, len);
fos.close();
}
is.close();
socket.close();
serverSocket.close();
System.out.println("文件传输完成!");
}
}
```
客户端的代码类似,只需要将输出流和输入流的方向反过来即可。
阅读全文