如何用java写一个文件服务器存放语音文件
时间: 2023-12-14 13:39:34 浏览: 28
要用Java编写一个文件服务器来存储语音文件,可以按照以下步骤:
1. 创建一个Java项目,并添加网络编程所需的库。
2. 编写服务器端代码,创建一个ServerSocket对象,指定端口号,监听客户端的连接请求。一旦有客户端连接,就创建一个Socket对象与客户端进行通信。
3. 服务器端代码需要实现以下功能:
- 接收客户端上传的语音文件并保存到指定路径;
- 将指定路径下的语音文件发送给客户端。
4. 在客户端代码中,创建一个Socket对象连接到服务器端,并实现以下功能:
- 将本地的语音文件上传到服务器端;
- 从服务器端下载指定路径下的语音文件。
5. 在服务器端和客户端中,需要使用InputStream和OutputStream来进行读写操作。
下面是一个简单的示例代码,仅供参考:
服务器端代码:
```java
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class FileServer {
public static void main(String[] args) {
int port = 8888; // 指定服务器端口号
ServerSocket serverSocket = null;
Socket socket = null;
InputStream inputStream = null;
FileOutputStream fileOutputStream = null;
try {
serverSocket = new ServerSocket(port);
System.out.println("服务器已启动,等待客户端连接...");
socket = serverSocket.accept(); // 等待客户端连接
System.out.println("客户端已连接:" + socket.getInetAddress().getHostAddress());
inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int len;
File file = new File("D:/voice/"); // 指定保存文件的路径
if (!file.exists()) {
file.mkdirs();
}
fileOutputStream = new FileOutputStream(file + "/test.wav"); // 指定保存文件的文件名
while ((len = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, len);
}
System.out.println("文件接收成功!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fileOutputStream != null) {
fileOutputStream.close();
}
if (inputStream != null) {
inputStream.close();
}
if (socket != null) {
socket.close();
}
if (serverSocket != null) {
serverSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
客户端代码:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class FileClient {
public static void main(String[] args) {
String hostname = "localhost"; // 指定服务器主机名
int port = 8888; // 指定服务器端口号
Socket socket = null;
FileInputStream fileInputStream = null;
OutputStream outputStream = null;
try {
socket = new Socket(hostname, port); // 连接服务器
System.out.println("连接服务器成功!");
fileInputStream = new FileInputStream(new File("D:/voice/test.wav")); // 指定要上传的文件
outputStream = socket.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = fileInputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
System.out.println("文件上传成功!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (outputStream != null) {
outputStream.close();
}
if (fileInputStream != null) {
fileInputStream.close();
}
if (socket != null) {
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```