如何使的FileInputStream阅读()函数停止看了一定字节后?

时间:2019-01-30 18:45:15

标签: java io

我正在尝试创建一个程序,该程序将文件的字节压缩并保存到.txt文件中以进行解压缩。到目前为止,我仅将一个文件的字节保存到.txt文件中就成功了。但是,当保存多个文件时,我找不到让程序知道哪个字节属于哪个文件的方法。当遇到下一个程序的字节时,如何指示该程序停止读取字节?我的压缩功能:

private void compress(File source, File destination) {
    try {
        byte[] buffer = new byte[1024];
        FileInputStream fis = new FileInputStream(source);
        GZIPOutputStream gzip = new GZIPOutputStream(new FileOutputStream(destination, true));
        int len;
        while ((len = fis.read(buffer)) != -1) {
            System.out.println(len);
            gzip.write(buffer, 0, len);
        }
        gzip.finish();
        gzip.close();
        fis.close();
    } catch (FileNotFoundException e) {
        System.out.println("File couldn't be located. Please check the path given.");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

和我的解压缩功能:

 private byte[] decompress(File source) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    try {
        byte[] buffer = new byte[1024];
        GZIPInputStream gzip = new GZIPInputStream(new FileInputStream(source));
        int len;
        while ((len = gzip.read(buffer)) != -1) {
            baos.write(buffer, 0, len);
        }
        gzip.close();
    } catch (FileNotFoundException e) {
        System.out.println("File couldn't be located. Please check the path given.");
    } catch (IOException e) {
        e.printStackTrace();
    }
    return baos.toByteArray();
}

0 个答案:

没有答案