亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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)的兩個(gè)包是java.io和java.nio,它們的最重要的區(qū)別就是java.io里面的類是面向流的(stream oriented),java.nio里面的類是面向緩存的(buffer oriented)。

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

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    5個(gè)主流的Java開源IDE工具詳解

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

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

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

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

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

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

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

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

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

最新評(píng)論