欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java如何利用NIO壓縮文件或文件夾

 更新時間:2023年12月27日 14:41:00   作者:劉瑾言  
這篇文章主要介紹了java如何利用NIO壓縮文件或文件夾問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

java利用NIO壓縮文件或文件夾

package liu.cn.ixj.util;
 
import java.io.*;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
 
public class CompressUtils {
    private static  ZipOutputStream zipOutputStream=null;
    private static  ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
 
    public static void main(String[] args) {
        try {
            zipOutputStream=new ZipOutputStream(new FileOutputStream(new File("E://aa.zip")));
            toZip(new File("E:\\MyDownloads"));
            zipOutputStream.flush();
            zipOutputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void toZip(File file){
        if (file.isFile()){
            try {
                zipOutputStream.putNextEntry(new ZipEntry(file.getAbsolutePath().substring(3,file.getAbsolutePath().length())));
                FileChannel channel = new FileInputStream(file).getChannel();
                while (true){
                    byteBuffer.clear();
                    int read = channel.read(byteBuffer);
                    if (read==-1)break;;
                    zipOutputStream.write(byteBuffer.array());
                }
                channel.close();
                zipOutputStream.closeEntry();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else {
            File[] files = file.listFiles();
            if (files==null||files.length==0){
                try {
                    zipOutputStream.putNextEntry(new ZipEntry(file.getAbsolutePath().substring(3,file.getAbsolutePath().length())+"/"));
                    zipOutputStream.closeEntry();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }else {
                for (File file2:files) {
                    toZip(file2);
                }
            }
        }
    }
}

java.io包和java.nio包

Java中I/O相關(guān)的兩個包是java.io和java.nio,它們的最重要的區(qū)別就是java.io里面的類是面向流的(stream oriented),java.nio里面的類是面向緩存的(buffer oriented)。

面向流意味著一次讀取一個或者一些字節(jié),然后處理這些字節(jié),在讀取和處理這些字節(jié)時當(dāng)前線程是阻塞的,不能干其他事情。

面向緩存意味著把一些字節(jié)讀到緩存里面,選擇了讀取的字節(jié)之后當(dāng)前線程可以去做其他事情,以后再去處理緩存里面的字節(jié)也可以,也就是線程非阻塞。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用React和Java實現(xiàn)文本摘要小工具

    使用React和Java實現(xiàn)文本摘要小工具

    本文將詳細(xì)介紹如何使用 React 和 Java 搭建一個小型文本摘要工具,并基于 Hugging Face 提供的 API 來實現(xiàn)智能摘要功能,感興趣的可以了解下
    2024-11-11
  • Java?事務(wù)注解@Transactional回滾(try?catch、嵌套)問題

    Java?事務(wù)注解@Transactional回滾(try?catch、嵌套)問題

    這篇文章主要介紹了Java?@Transactional回滾(try?catch、嵌套)問題,Spring?事務(wù)注解?@Transactional?本來可以保證原子性,如果事務(wù)內(nèi)有報錯的話,整個事務(wù)可以保證回滾,但是加上try?catch或者事務(wù)嵌套,可能會導(dǎo)致事務(wù)回滾失敗
    2022-08-08
  • Idea配置Maven阿里云鏡像加速的實現(xiàn)

    Idea配置Maven阿里云鏡像加速的實現(xiàn)

    這篇文章主要介紹了Idea配置Maven阿里云鏡像加速的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • gateway網(wǎng)關(guān)與前端請求跨域問題的解決方案

    gateway網(wǎng)關(guān)與前端請求跨域問題的解決方案

    這篇文章主要介紹了gateway網(wǎng)關(guān)與前端請求跨域問題的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java線程中start和run方法全面解析

    Java線程中start和run方法全面解析

    這篇文章主要介紹了Java線程中start和run方法的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • 5個主流的Java開源IDE工具詳解

    5個主流的Java開源IDE工具詳解

    這篇文章主要介紹了5個主流的Java開源IDE工具,無論如何,Java在當(dāng)今使用的編程語言中始終排在前三名,在TIOBE索引中涉及700萬到1000萬的程序員和開發(fā)者
    2020-07-07
  • 服務(wù)性能優(yōu)化之mybatis-plus開啟與關(guān)閉SQL日志打印方法

    服務(wù)性能優(yōu)化之mybatis-plus開啟與關(guān)閉SQL日志打印方法

    這篇文章主要介紹了在Mybatis-plus中開啟和關(guān)閉控制臺SQL日志打印,在`application.properties`文件中,可以通過配置來實現(xiàn)SQL日志的開啟和關(guān)閉,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • Java中的包(package)是什么和使用方法

    Java中的包(package)是什么和使用方法

    包是Java中一種強(qiáng)大的組織代碼的工具,它們幫助開發(fā)者將代碼分組,防止命名沖突,并通過控制訪問級別來增強(qiáng)代碼的安全性,這篇文章主要介紹了Java中的包(package)是什么和如何使用它們,需要的朋友可以參考下
    2024-07-07
  • java實現(xiàn)波雷費(fèi)密碼算法示例代碼

    java實現(xiàn)波雷費(fèi)密碼算法示例代碼

    這篇文章主要介紹了java實現(xiàn)波雷費(fèi)密碼算法示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 通過Feign進(jìn)行調(diào)用@FeignClient?找不到的解決方案

    通過Feign進(jìn)行調(diào)用@FeignClient?找不到的解決方案

    這篇文章主要介紹了通過Feign進(jìn)行調(diào)用@FeignClient?找不到的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論