java简单的网络文件共享系统代码
时间: 2023-08-18 12:08:40 浏览: 57
以下是一个简单的 Java 网络文件共享系统的示例代码,它基于客户端-服务器模型:
服务器端代码:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(1234); // 监听端口号为 1234
System.out.println("服务器已启动,等待客户端连接...");
Socket clientSocket = serverSocket.accept(); // 等待客户端连接
System.out.println("客户端已连接,IP地址为 " + clientSocket.getInetAddress());
// 读取客户端上传的文件
InputStream inputStream = clientSocket.getInputStream();
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
DataInputStream dataInputStream = new DataInputStream(bufferedInputStream);
String filename = dataInputStream.readUTF(); // 读取上传的文件名
long fileSize = dataInputStream.readLong(); // 读取上传的文件大小
FileOutputStream fileOutputStream = new FileOutputStream("D:\\" + filename); // 存储文件的路径
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = dataInputStream.read(buffer, 0, buffer.length)) != -1) {
fileOutputStream.write(buffer, 0, bytesRead);
}
System.out.println("文件 " + filename + " 上传成功!");
// 向客户端发送文件
File file = new File("D:\\" + filename); // 要发送的文件
byte[] fileBytes = new byte[(int) file.length()];
FileInputStream fileInputStream = new FileInputStream(file);
BufferedInputStream bufferedFileInputStream = new BufferedInputStream(fileInputStream);
bufferedFileInputStream.read(fileBytes, 0, fileBytes.length);
OutputStream outputStream = clientSocket.getOutputStream();
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
DataOutputStream dataOutputStream = new DataOutputStream(bufferedOutputStream);
dataOutputStream.writeLong(fileSize); // 发送文件大小
dataOutputStream.write(fileBytes, 0, fileBytes.length); // 发送文件内容
dataOutputStream.flush();
System.out.println("文件 " + filename + " 发送成功!");
// 关闭连接
dataInputStream.close();
dataOutputStream.close();
clientSocket.close();
serverSocket.close();
}
}
```
客户端代码:
```java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
Socket clientSocket = new Socket("localhost", 1234); // 连接服务器
System.out.println("已连接服务器,IP地址为 " + clientSocket.getInetAddress());
// 上传文件
String filename = "test.txt"; // 要上传的文件路径
File file = new File(filename);
byte[] fileBytes = new byte[(int) file.length()];
FileInputStream fileInputStream = new FileInputStream(file);
BufferedInputStream bufferedFileInputStream = new BufferedInputStream(fileInputStream);
bufferedFileInputStream.read(fileBytes, 0, fileBytes.length);
OutputStream outputStream = clientSocket.getOutputStream();
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
DataOutputStream dataOutputStream = new DataOutputStream(bufferedOutputStream);
dataOutputStream.writeUTF(filename); // 发送文件名
dataOutputStream.writeLong(file.length()); // 发送文件大小
dataOutputStream.write(fileBytes, 0, fileBytes.length); // 发送文件内容
dataOutputStream.flush();
System.out.println("文件 " + filename + " 上传成功!");
// 下载文件
InputStream inputStream = clientSocket.getInputStream();
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
DataInputStream dataInputStream = new DataInputStream(bufferedInputStream);
long fileSize = dataInputStream.readLong(); // 读取文件大小
byte[] buffer = new byte[1024];
int bytesRead;
FileOutputStream fileOutputStream = new FileOutputStream("D:\\download.txt"); // 下载文件的路径
while ((bytesRead = bufferedInputStream.read(buffer, 0, buffer.length)) != -1) {
fileOutputStream.write(buffer, 0, bytesRead);
}
System.out.println("文件下载成功!");
// 关闭连接
dataInputStream.close();
dataOutputStream.close();
clientSocket.close();
}
}
```
注意,这只是一个简单的示例代码,并不考虑数据的安全性和错误处理。如果你要实际使用这个系统,请务必加入适当的安全措施和错误处理。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)