Java 获取远程文件并放到压缩包中,并下载
时间: 2024-09-24 14:22:49 浏览: 13
在Java中,你可以使用`java.net.URL`类来获取远程文件的内容,并结合`java.util.zip`库来创建并下载压缩包。下面是一个简单的示例,展示如何实现这个过程:
```java
import java.io.*;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.util.zip.ZipOutputStream;
public class DownloadAndCompress {
public static void main(String[] args) throws IOException {
String remoteFileUrl = "http://example.com/file.txt";
String targetZipFilePath = "/path/to/local/directory/file.zip";
try (BufferedInputStream in = new BufferedInputStream(new URL(remoteFileUrl).openStream());
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(targetZipFilePath))) {
// 创建一个新的入口条目
ZipEntry entry = new ZipEntry("file.txt");
zipOut.putNextEntry(entry);
// 读取远程文件内容并写入压缩流
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
zipOut.write(buffer, 0, bytesRead);
}
// 关闭通道并释放资源
zipOut.closeEntry();
zipOut.finish();
System.out.println("File downloaded and compressed successfully.");
} catch (IOException e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}
```
在这个例子中:
1. 我们首先打开远程文件的输入流,并创建一个`ZipOutputStream`用于写入压缩包。
2. 创建了一个`ZipEntry`表示要添加到压缩包内的文件名,这里是`"file.txt"`。
3. 通过`read()`方法逐块读取远程文件内容并写入压缩流。
4. 最后关闭压缩流的当前条目、完成压缩以及关闭所有资源。