java 网络传输文件
时间: 2023-06-27 22:07:44 浏览: 44
在 Java 中,可以使用标准的 Java API 进行网络传输文件。具体步骤如下:
1. 建立网络连接:使用 Socket 类建立与服务器的连接。
2. 获取输入输出流:使用 InputStream 和 OutputStream 类获取输入输出流。
3. 读取数据:使用 InputStream 类从输入流中读取数据。
4. 写入数据:使用 OutputStream 类将数据写入输出流中。
5. 关闭流和连接:使用 close() 方法关闭流和连接。
以下是一个简单的示例代码,演示了如何从服务器下载文件并保存到本地:
```java
import java.io.*;
import java.net.*;
public class FileTransfer {
public static void main(String[] args) throws Exception {
String serverIP = "192.168.0.100";
int serverPort = 9000;
String filePath = "/path/to/file.txt";
String savePath = "/path/to/save/file.txt";
Socket socket = new Socket(serverIP, serverPort); // 建立连接
InputStream in = socket.getInputStream(); // 获取输入流
OutputStream out = socket.getOutputStream(); // 获取输出流
// 发送下载请求
out.write(("GET " + filePath + " HTTP/1.1\r\n\r\n").getBytes());
// 读取响应头
byte[] buffer = new byte[1024];
int len = in.read(buffer);
String response = new String(buffer, 0, len);
if (!response.startsWith("HTTP/1.1 200 OK")) {
throw new Exception("Server returned error: " + response);
}
// 读取文件内容并保存到本地文件
FileOutputStream fileOut = new FileOutputStream(savePath);
while ((len = in.read(buffer)) > 0) {
fileOut.write(buffer, 0, len);
}
fileOut.close();
// 关闭流和连接
in.close();
out.close();
socket.close();
}
}
```
上述代码中,`serverIP` 和 `serverPort` 分别表示服务器的 IP 地址和端口号;`filePath` 表示服务器上要下载的文件路径;`savePath` 表示保存到本地的文件路径。
在代码中,我们首先使用 `Socket` 类建立与服务器的连接,并使用 `getInputStream()` 和 `getOutputStream()` 方法获取输入输出流。然后,我们发送下载请求并读取响应头,如果服务器返回的响应头不是 HTTP/1.1 200 OK,则说明出现了错误。最后,我们读取文件内容并将其保存到本地文件中,然后关闭所有的流和连接。
当然,在实际应用中,我们可能需要考虑更多的异常情况,比如网络连接超时、文件不存在等等。