激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - java壓縮文件與刪除文件的示例代碼

java壓縮文件與刪除文件的示例代碼

2020-08-21 11:23TryTestwonderful Java教程

這篇文章主要介紹了java壓縮文件與刪除文件的示例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

壓縮文件 :toZip(String srcDir, OutputStream out,boolean KeepDirStructure)

刪除文件:deleteFolder(File folder)

java" id="highlighter_10507">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
/**
     * 壓縮成ZIP 方法1
     *
     * @param srcDir
     *      壓縮文件夾路徑
     * @param out
     *      壓縮文件輸出流
     * @param KeepDirStructure
     *      是否保留原來(lái)的目錄結(jié)構(gòu),true:保留目錄結(jié)構(gòu);
     *      false:所有文件跑到壓縮包根目錄下(注意:不保留目錄結(jié)構(gòu)可能會(huì)出現(xiàn)同名文件,會(huì)壓縮失敗)
     * @throws RuntimeException
     *       壓縮失敗會(huì)拋出運(yùn)行時(shí)異常
     */
    protected void toZip(String srcDir, OutputStream out,
            boolean KeepDirStructure) throws RuntimeException {
        long start = System.currentTimeMillis();
        ZipOutputStream zos = null;
        try {
            zos = new ZipOutputStream(out);
            File sourceFile = new File(srcDir);
            compress(sourceFile, zos, sourceFile.getName(), KeepDirStructure);
            long end = System.currentTimeMillis();
            System.out.println("壓縮完成,耗時(shí):" + (end - start) + " ms");
        } catch (Exception e) {
            throw new RuntimeException("zip error from ZipUtils", e);
        } finally {
            if (zos != null) {
                try {
                    zos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    /**
     * 遞歸壓縮方法
     *
     * @param sourceFile
     *      源文件
     * @param zos
     *      zip輸出流
     * @param name
     *      壓縮后的名稱(chēng)
     * @param KeepDirStructure
     *      是否保留原來(lái)的目錄結(jié)構(gòu),true:保留目錄結(jié)構(gòu);
     *      false:所有文件跑到壓縮包根目錄下(注意:不保留目錄結(jié)構(gòu)可能會(huì)出現(xiàn)同名文件,會(huì)壓縮失敗)
     * @throws Exception
     */
    private static void compress(File sourceFile, ZipOutputStream zos,
            String name, boolean KeepDirStructure) throws Exception {
        byte[] buf = new byte[BUFFER_SIZE];
        if (sourceFile.isFile()) {
            // 向zip輸出流中添加一個(gè)zip實(shí)體,構(gòu)造器中name為zip實(shí)體的文件的名字
            zos.putNextEntry(new ZipEntry(name));
            // copy文件到zip輸出流中
            int len;
            FileInputStream in = new FileInputStream(sourceFile);
            while ((len = in.read(buf)) != -1) {
                zos.write(buf, 0, len);
            }
            // Complete the entry
            zos.closeEntry();
            in.close();
        } else {
            File[] listFiles = sourceFile.listFiles();
            if (listFiles == null || listFiles.length == 0) {
                // 需要保留原來(lái)的文件結(jié)構(gòu)時(shí),需要對(duì)空文件夾進(jìn)行處理
                if (KeepDirStructure) {
                    // 空文件夾的處理
                    zos.putNextEntry(new ZipEntry(name + "/"));
                    // 沒(méi)有文件,不需要文件的copy
                    zos.closeEntry();
                }
            } else {
                for (File file : listFiles) {
                    // 判斷是否需要保留原來(lái)的文件結(jié)構(gòu)
                    if (KeepDirStructure) {
                        // 注意:file.getName()前面需要帶上父文件夾的名字加一斜杠,
                        // 不然最后壓縮包中就不能保留原來(lái)的文件結(jié)構(gòu),即:所有文件都跑到壓縮包根目錄下了
                        compress(file, zos, name + "/" + file.getName(),
                                KeepDirStructure);
                    } else {
                        compress(file, zos, file.getName(), KeepDirStructure);
                    }
                }
            }
        }
    }
/**
     * 刪除文件夾
     *
     * @param folder
     */
    protected void deleteFolder(File folder) {
        // 待刪除文件路徑
        String path = this.getClass().getResource("/").getPath().replace(
                "WEB-INF/classes/", "postFile/");
        if (folder.isDirectory()) {
            File[] files = folder.listFiles();
            for (int i = 0; i < files.length; i++) {
                deleteFolder(files[i]);
            }
            // 非當(dāng)前目錄,刪除
            if (!folder.getAbsolutePath().equalsIgnoreCase(path)) {
//              // 只刪除在7天前創(chuàng)建的文件
//              if (canDeleteFile(folder)) {
//                  if (folder.delete()) {
//                      System.out.println("文件夾" + folder.getName() + "刪除成功!");
//                  } else {
//                      System.out.println("文件夾" + folder.getName()
//                              + "刪除失敗!此文件夾內(nèi)的文件可能正在被使用");
//                  }
//              }
                //只要是空的文件夾就刪除不區(qū)分幾天前創(chuàng)建
                if (folder.delete()) {
                    System.out.println("文件夾" + folder.getName() + "刪除成功!");
                } else {
                    System.out.println("文件夾" + folder.getName()
                            + "刪除失敗!此文件夾內(nèi)的文件可能正在被使用");
                }
            }
        } else {
            deleteFile(folder);
        }
    }
    /**
     * 判斷文件是否能夠被刪除
     */
    protected boolean canDeleteFile(File file) {
        Date fileDate = getfileDate(file);
        Date date = new Date();
        long time = (date.getTime() - fileDate.getTime()) / 1000 / 60 / 60 / 24;// 當(dāng)前時(shí)間與文件創(chuàng)建時(shí)間的間隔天數(shù)
        // 大于7天可刪除,小于10天不刪除
        if (time > 10) {
            return true;
        } else {
            return false;
        }
//      return true;
    }
    /**
     * 獲取文件最后的修改時(shí)間
     *
     * @param file
     * @return
     */
    protected Date getfileDate(File file) {
        long modifiedTime = file.lastModified();
        Date d = new Date(modifiedTime);
        return d;
    }
    /**
     * 刪除文件
     *
     * @param file
     */
    protected void deleteFile(File file) {
        try {
            if (file.isFile()) {
                // 刪除符合條件的文件
                if (canDeleteFile(file)) {
                    if (file.delete()) {
                        System.out.println("文件" + file.getName() + "刪除成功!");
                    } else {
                        System.out.println("文件" + file.getName()
                                + "刪除失敗!此文件可能正在被使用");
                    }
                } else {
                }
            } else {
                System.out.println("沒(méi)有可以刪除的文件了");
            }
        } catch (Exception e) {
            System.out.println("刪除文件失敗========");
            e.printStackTrace();
        }
    }

總結(jié)

到此這篇關(guān)于java壓縮文件與刪除文件的示例代碼的文章就介紹到這了,更多相關(guān)java壓縮文件與刪除文件內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/HXiao0805/article/details/108082757

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 性爱视频免费 | 久草干| 久久综合一区 | 国产亚洲精品久久久久久网站 | 欧美成人国产va精品日本一级 | 国产一区二区精品在线观看 | 国产午夜亚洲精品午夜鲁丝片 | 亚洲天堂岛国片 | 欧美成人一区二区三区 | 老女人碰碰在线碰碰视频 | 黄色免费影片 | 亚洲电影在线观看高清免费 | 西川av在线一区二区三区 | av国产在线被下药迷网站 | 欧美日韩精品不卡一区二区三区 | 福利在线国产 | 日韩av电影在线观看 | 欧美黄一级| 精品人伦一区二区三区蜜桃网站 | 欧美精品一区二区视频 | 中国国语毛片免费观看视频 | 欧美日韩高清在线观看 | 九九热精品视频在线 | 水多视频在线观看 | 亚洲电影在线观看高清免费 | 艹男人的日日夜夜 | 久久777国产线看观看精品 | 91精品国产一区二区在线观看 | 亚洲情在线| 激情97| 色婷婷久久久亚洲一区二区三区 | 91社区电影 | 国产一区精品视频 | 狠狠婷婷综合久久久久久妖精 | 青青草最新网址 | 全免费午夜一级毛片真人 | 91午夜视频 | 国产一区二区三区影视 | 久久精品综合视频 | 久草在线最新 | 黑人日比 |