java NIO 下载 InputStream到本地
时间: 2024-04-28 15:16:12 浏览: 218
Java.nio 与Java.io比较
在Java NIO中,可以使用Channel和Buffer来实现文件的下载。下面是一个简单的示例代码,演示如何将InputStream中的数据下载到本地文件:
```java
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
public class FileDownloader {
public static void download(String url, String filePath) throws IOException {
URL fileUrl = new URL(url);
try (InputStream inputStream = fileUrl.openStream();
ReadableByteChannel channel = Channels.newChannel(inputStream);
FileOutputStream outputStream = new FileOutputStream(filePath)) {
outputStream.getChannel().transferFrom(channel, 0, Long.MAX_VALUE);
}
}
public static void main(String[] args) {
String url = "http://example.com/file.txt";
String filePath = "path/to/save/file.txt";
try {
download(url, filePath);
System.out.println("文件下载成功!");
} catch (IOException e) {
System.out.println("文件下载失败:" + e.getMessage());
}
}
}
```
上述代码中,我们首先通过URL创建一个InputStream,然后使用Channels.newChannel()方法将InputStream转换为ReadableByteChannel。接着,我们创建一个FileOutputStream来保存下载的文件。最后,通过outputStream.getChannel().transferFrom()方法将数据从channel传输到outputStream中,实现文件的下载。
阅读全文