一个文件,本来想从Server Down到本地来解析。但本地路径名中,可能会含有中文,而这里又不想写死。在找解决方法时,想到,Down的过程中,本身用的就是流,为什么不直接把流解压,然后解析呢?
所以,就有了下面的故事:
package com.lippeng.helloworld;
import java.io.IOException;
import java.net.URL;
import java.util.zip.ZipInputStream;
public class HelloWorld {
public static void main(String[] args) {
String path = "http://localhost:9090/dir/file.zip";
path = path.replaceAll("\\\\", "/");// 如果端口号后面的路径中有\就需要转换了,在这里是废话一句
ZipInputStream inputStream = null;
try {
URL url = new URL(path);
inputStream = new ZipInputStream(url.openStream());// 通过URL拿到输入流,并转换成Zip输入流。装饰就是好啊。。。
inputStream.getNextEntry();// 这一句很重要。本例中,压缩包中只有一个文件。如果有多个,要多次执行这句话的。
byte[] b = new byte[1];
int count = inputStream.read(b);
while (count != -1) {
// 在这里做想做的事情
System.out.println(b);
count = inputStream.read(b);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...
这个简单的例子展示了Java输入输出流的基本用法,实际应用中,我们可以根据需求选择不同的流类型和操作方式,例如处理网络数据传输、内存缓冲、压缩解压等复杂场景。理解并熟练掌握Java的输入输出流,对于进行任何...
- 输入流是Java I/O模型的一部分,用于从数据源读取数据。在本场景中,它可以从网络、文件系统或其他数据源读取原始数据。 5. **输出流(OutputStream)**: - 输出流则用于将数据写入目的地,例如网络连接或文件...
- `InputStream` 和 `OutputStream` 是所有字节输入流和输出流的基类。它们提供了读取和写入字节数据的基本方法。 - `ByteArrayInputStream` 和 `ByteArrayOutputStream` 分别用于从字节数组读取和向字节数组写入...
在Java中,输入流(InputStream)和输出流(OutputStream)构成了IO体系的基础。输入流用于读取数据,而输出流则用于写入数据。它们都是抽象类,提供了基本的读写操作方法,但不能直接实例化,需要通过它们的子类来...
1. 使用`TarUtil`类的静态方法`unTar()`,传入tar文件的输入流和解压目标目录的输出流。例如: ```java File tarFile = new File("path/to/tarfile.tar"); File destDir = new File("path/to/destination/directory...
1. **Java的I/O流**:Java中的I/O流是处理输入输出的基础,包括FileInputStream和FileOutputStream用于读写文件,BufferedInputStream和BufferedOutputStream提高读写效率,还有DataInputStream和DataOutputStream...
`ZipInputStream`可以从一个输入流中读取ZIP文件内容,而`ZipEntry`则表示ZIP文件中的单个条目,即压缩的文件或目录。 以下是一个简单的解压ZIP文件的步骤: 1. **打开ZIP文件**:使用`FileInputStream`打开ZIP...
`ZipInputStream`可以从输入流中读取ZIP文件的内容,而`ZipOutputStream`则允许我们将数据写入ZIP文件。 对于解压缩,`CompressFileUtils`工具类可能包含以下核心方法: ```java import java.io.*; import java....
- **按流向分:**输入流(Input Stream)和输出流(Output Stream)。 - **按数据类型分:**字节流(Byte Stream)和字符流(Character Stream)。 - **按功能分:**节点流(直接与数据源连接)和处理流(增加...
1. `ZipInputStream`:用于读取ZIP文件流,可以从输入流中逐个获取ZIP条目。 2. `ZipEntry`:表示ZIP文件中的一个条目,可以获取条目的名称、大小、时间戳等信息。 3. `BufferedInputStream`和`BufferedOutputStream...
创建输入流,读取下载的ZIP或GZ文件,遍历每个条目并将其写入到本地目录。 4. **备份文件**: 备份文件通常意味着复制文件到另一个位置。在FTP中,这可以通过`storeFile()`方法实现,将本地文件上传到FTP服务器的...
- **Java中的流根据方向可以分为输入流(Input Stream)和输出流(Output Stream)**: - 输入流用于从源读取数据。 - 输出流则用于向目的地写入数据。 #### 2. 文件流 - **文件流(File Stream)**:文件流是一种特殊...
一个Java随书实例:用GZIP压缩解压文件,从源文件得到文件输入流,得到目标文件输出流,得到压缩输出流,设定读入缓冲区尺寸,弹出文件选择器,并判断是否点击了打开按钮,判断事件来自于哪个按钮,用于选择解压和...
当从GZ文件中读取数据时,你需要将输入流包装在GZIPInputStream中。如下所示: ```java FileInputStream fis = new FileInputStream("output.gz"); GZIPInputStream gis = new GZIPInputStream(fis); ...
然后,我们可以创建一个输出流,将解压的条目数据写入目标位置。 5. **代码实现**:在`src`目录中,通常会包含Java源代码文件,如`ZipUtils.java`,其中包含了压缩和解压缩的静态方法。这些方法可能包括`...
7. **资源管理**:解压完成后,记得关闭所有打开的输入流和输出流,以防止资源泄露。Java 7引入的try-with-resources语句可以简化这个过程。 实现上述功能的代码可能会较长,这里只能给出大致的流程。实际开发时,...
5. 关闭所有输入/输出流。 替换文件则涉及到读取源文件,修改内容后写入目标文件。这通常使用FileInputStream和FileOutputStream的组合实现,读取源文件,修改内容后,再写入目标文件。 打包程序通常是指将多个...
- 接着,读取输入流中的数据,并写入到`GZIPOutputStream`中进行压缩。 - 最后,关闭输入输出流,并完成压缩过程。 ### Java文件解压缩:GZIP格式 与压缩类似,解压缩也可以通过Java的`java.util.zip`包中的`...
- `java.util.zip`包中的`ZipInputStream`类用于读取ZIP输入流,并逐个处理ZIP条目。 - 创建`ZipInputStream`,并遍历其中的每一个`ZipEntry`。 - 对于每个条目,检查其是否为文件或目录。如果是文件,创建目标...