Java中获取到输入流之后怎么下载文件
时间: 2024-12-11 19:32:04 浏览: 8
在Java中,你可以通过以下步骤从输入流下载文件:
1. **创建连接**:
首先,你需要获得一个URL对象,该对象通常代表你要下载的资源的地址。
```java
URL url = new URL("http://example.com/file-to-download");
```
2. **创建连接并获取输入流**:
使用`HttpURLConnection`或更现代的`HttpClient`库来建立连接,并获取到输入流。
```java
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET"); // 请求方法
InputStream inputStream = connection.getInputStream();
```
或者使用Spring框架的`RestTemplate`:
```java
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<byte[]> response = restTemplate.getForEntity(url.toString(), byte[].class);
InputStream inputStream = new ByteArrayInputStream(response.getBody());
```
3. **缓冲输入流**:
创建一个`BufferedInputStream`,以便可以更有效地读取数据。
```java
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
BufferedInputStream bufferedStream = new BufferedInputStream(inputStream);
```
4. **保存文件**:
创建目标文件的输出流,例如使用`FileOutputStream`,然后将数据写入。
```java
File file = new File("path/to/downloaded/file");
FileOutputStream outputStream = new FileOutputStream(file);
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = bufferedStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
bufferedStream.close(); // 关闭缓冲流
bufferedReader.close(); // 如果有
```
5. **处理异常**:
确保在下载过程中捕获可能出现的网络异常和文件系统错误。
```java
try {
// 上述所有操作
} catch (IOException e) {
e.printStackTrace();
}
```
阅读全文