首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >即使我得到正确的名称和路径,也不会删除Zip文件。

即使我得到正确的名称和路径,也不会删除Zip文件。
EN

Stack Overflow用户
提问于 2016-05-18 22:48:47
回答 1查看 1K关注 0票数 0

我正在尝试删除一个压缩文件后,解压。但我无法删除:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (file.getName().contains(".zip")) {
    System.out.println(file.getAbsolutePath()); // I am getting the correct path
    file.delete();
    System.out.println(file.getName()); // I am getting the correct name Script-1.zip
}

这是完整的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Zip4 {

    public static void main(String[] args) {
        File[] files = new File(args[0]).listFiles();

        for(File file : files)
        //  System.out.println(file.getName());
            //if(file.getName().contains("1400") && file.getName().contains(".zip"))
              extractFolder(args[0] + file.getName(), args[1]);
        DeleteFiles();

     //   for(File file : files)
                //  System.out.println("File:C:/1/"+ file.getName());

//      extractFolder(args[0]+file.getName(),args[1]);

    }

    private static void DeleteFiles()
    {
        File f = null;
        File[] paths;
        f = new File("D:/Copyof");
        paths = f.listFiles();

          for(File path:paths)
             {
                // prints file and directory paths
                if(path.getName().contains("J14_0_0RC") || path.getName().contains(".zip") || path.getName().contains(".log"))
                {

                     //System.out.println(path);
                     path.delete();
                }

             }
    }

    private static void extractFolder(String zipFile,String extractFolder) 
    {
        try
        {
            int BUFFER = 2048;
            File file = new File(zipFile);
            ZipFile zip = new ZipFile(file);
            String newPath = extractFolder;

            new File(newPath).mkdir();
            Enumeration zipFileEntries = zip.entries();

            // Process each entry
            while (zipFileEntries.hasMoreElements())
            {
                // grab a zip file entry
                ZipEntry entry = (ZipEntry) zipFileEntries.nextElement();
                String currentEntry = entry.getName();

                File destFile = new File(newPath, currentEntry);
                //destFile = new File(newPath, destFile.getName());
                File destinationParent = destFile.getParentFile();

                // create the parent directory structure if needed
                destinationParent.mkdirs();

                if (!entry.isDirectory())
                {
                    BufferedInputStream is = new BufferedInputStream(zip
                    .getInputStream(entry));
                    int currentByte;
                    // establish buffer for writing file
                    byte data[] = new byte[BUFFER];

                    // write the current file to disk
                    FileOutputStream fos = new FileOutputStream(destFile);
                    BufferedOutputStream dest = new BufferedOutputStream(fos,
                    BUFFER);

                    // read and write until last byte is encountered
                    while ((currentByte = is.read(data, 0, BUFFER)) != -1) {
                        dest.write(data, 0, currentByte);
                    }
                    dest.flush();
                    dest.close();
                    fos.flush();
                    fos.close();
                    is.close();
                }

            }

            if(file.getName().contains(".zip"))
            {
                System.out.println(file.getAbsolutePath());
                file.delete();
                  System.out.println(file.getName());
            }
        }
        catch (Exception e) 
        {
            System.out.println("Error: " + e.getMessage());

        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-18 22:59:56

ZipFile是一个可关闭的资源。所以,当您在一个finally块中完成时,要么使用close()创建它,要么使用try-with-resources (自java7)创建它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
try(ZipFile zip = new ZipFile(file)){
  //unzip here
}
file.delete();

除此之外,你还应该重新审视这个街区。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dest.flush();
dest.close();
fos.flush();
fos.close();
is.close();

这很容易导致资源泄漏。如果一个上级调用失败,则不会调用所有后续调用,从而导致未关闭的资源和资源泄漏。

所以最好也在这里使用try-with-resources

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
try(BufferedInputStream is = new BufferedInputStream(zip.getInputStream(entry));
    FileOutputStream fos = new FileOutputStream(destFile);
    BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER)) {
  //write the data
} //all streams are closed implicitly here

或为此使用现有工具,例如Apache Commons IO IOUtil.closeQuietly(resource)或将每个调用嵌入到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(resource != null) {
  try{
     resource.close();
  } catch(IOException e){
     //omit
  }
}

您还可以省略对flush()的调用,这是在关闭资源时隐式执行的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37315806

复制
相关文章
git永久删除文件和即使记录
1,首先在本地删除要删除的文件的相对路径 git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 要删除文件的相对路径' --prune-empty --tag-name-filter cat -- --all 2,以强制覆盖的方式更新到远程服务器 git push origin master --force --all
hss
2022/02/25
6900
【数据】即使不会爬虫技术,也能轻松获取的重要数据
小编邀请您,先思考: 1 对于具体的业务问题,如何做好数据准备? 很多做数据分析的同学,对数据的获取有一个误区,觉得在互联网上获取数据,必须通过爬虫进行爬取。殊不知,有些必须知道的数据,即使不会爬虫的技能,也可以轻松获取。 根据这些数据类型的不同,我把它们划分为实时数据、趋势数据以及关联数据,这里,我们先来了解一下,互联网上,有哪些基于地理位置信息的实时数据。 一、实时数据 实时数据,顾名思义,是事物当前状态的数据。更好的,经过整合的实时数据,可以为我们尽早地处理问题,提供最佳的契机。 那么,互联网上,有
陆勤_数据人网
2018/04/18
5.1K0
【数据】即使不会爬虫技术,也能轻松获取的重要数据
linux zip 删除源文件,linux zip命令参数及用法详解–linux压缩zip文件命令[通俗易懂]
linux 命令的基本用法是:zip [参数] [打包后的文件名] [打包的目录路径]
全栈程序员站长
2022/11/01
7.2K0
Joomla!4.1.0 Zip Slip 文件覆盖/路径遍历
/libraries/vendor/joomla/archive/src/Tar.php script. Specifically, into the Joomla\Archive\Tar::extract() method:
Khan安全团队
2022/04/21
1.1K0
阻塞队列 BlockingQueue 我也不会啊
为了应对不同的业务场景,BlockingQueue 提供了4 组不同的方法用于插入、移除以及对队列中的元素进行检查。如果请求的操作不能得到立即执行的话,每组方法的表现是不同的。这些方法如下:
韩旭051
2021/04/14
7480
阻塞队列 BlockingQueue 我也不会啊
Linux中删除特殊名称文件的多种方式
我们都知道,在linux删除一个文件可以使用rm命令,但是有一些特殊名称的文件使用普通的rm方式却没法删除,本文介绍linux中删除特殊名称文件的多种方式。
编程珠玑
2019/09/02
5.4K0
ZIP和RAR文件的不同
生活中我们经常需要使用电脑与朋友之间的文件传送,但往往会受到文件大小的限制而无法发出去,此时需要将文件压缩后再发送,那么有小伙伴会问rar和zip又有什么区别?
幻影龙王
2021/09/08
2.7K0
加密ZIP文件可以存在两个正确的密码?
出品 | OSC开源社区(ID:oschina2013) Positive Technologies 的网络安全研究员 Arseniy Sharoglazov 近日在社交平台分享了一个简单的实验并指出,加密的 ZIP 文件可能存在两个正确的密码,并且都可以提取出相同的结果。 “创建 ZIP:7z a http://x.zip/etc/passwd -mem=AES256 -p 使用这个密码:Nev1r-G0nna-G2ve-Y8u-Up-N5v1r-G1nna-Let-Y4u-D1wn-N8v4r-G5nn
程序猿DD
2022/08/29
9880
加密ZIP文件可以存在两个正确的密码?
Troubleshooting 专题 - 问正确的问题 得到正确的答案
在很多公司中,IT、数据中心、业务系统一出故障,会有很多人被叫到作战室(就是一个为了解决该问题,而把所有相关人员集中在一起的一个会议室), 但是对于这个问题他们是否可以修复, 是否他们应该负有责任, 经常没有线索.
东风微鸣
2022/04/22
4340
Troubleshooting 专题 - 问正确的问题 得到正确的答案
怎样恢复删除的文件?正确做法应是这样!
“我在对电脑的文件进行整理时,一不小心删除了一整个文件夹,导致我里面所有的重要文件都丢失了!还能找回来吗?”
用户10682816
2023/08/09
3000
Python解压zip压缩包到指定文件路径
Python解压zip压缩包到指定文件路径,给大家介绍zipfile库的简单使用 ZIP文件格式是一种常见的归档和压缩标准。这个模块提供了创建、读取、写入、追加和列出ZIP文件的工具。 import zipfile import os """ src_path:压缩包所在文件路径 target_path:压缩后文件存放路径 """ src_path=r"\chrome\chromedriver_win32.zip" target_path="\chrome\数据" if(not os.path.isd
北山啦
2022/11/27
2.1K0
Python解压zip压缩包到指定文件路径
R语言输出当前脚本的路径和名称
thisPath <- function() { cmdArgs <- commandArgs(trailingOnly = FALSE) if (length(grep("^-f$", cmdArgs)) > 0) { # R console option normalizePath(dirname(cmdArgs[grep("^-f", cmdArgs) + 1]))[1] } else if (length(grep("^--file=", cmdArgs)) > 0) {
用户7625144
2021/07/20
1.6K0
经纬中国邵亦波:区块链部分应用即使做成也不会创造太多价值
腾讯创业讯 1月9日消息,经纬中国创始管理合伙人邵亦波再次发声区块链,称区块链会颠覆很多行业,也一定创造出一些之前不能想象的应用和公司,但目前很多想当然的应用即使做成了也不会给股东和token holder创造很多价值。 以下为邵亦波再次发声原文: 很久没写东西了,上次写了那段后有点手痒,所以再接着写了一段,希望对大家有帮助:基于区块链的去中心化会改变很多行业,这已是很多的人的共识。但是绝大多数创业者,甚至大多数投资者,对区域链的开源这个本质了解不够深刻,对分叉(fork)的意义想得不够深远,造成他们对
企鹅号小编
2018/02/05
4770
经纬中国邵亦波:区块链部分应用即使做成也不会创造太多价值
Linux 批量删除雷同名称文件的解决方法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
泥豆芽儿 MT
2019/10/25
2K0
Linux 批量删除雷同名称文件的解决方法
文件被误删除的正确恢复方法
删除文件想必是大家经常过的事,有些时候不小心删除了有用的文件就有点麻烦了。如果是删除文件到回收站,那么直接按住CTRL+Z 或者打开电脑里的回收站点还原项目就可以找回刚刚误删的文件了。
用户10127983
2022/10/25
3.1K0
文件被误删除的正确恢复方法
java解析zip文件_java解压zip文件
https://www.jianshu.com/p/a9d861732445 https://blog.csdn.net/aiynmimi/article/details/77453809
全栈程序员站长
2022/10/04
1.2K0
java解析zip文件_java解压zip文件
VUE项目,文件路径正确,但是This relative module was not found
这个人她一直会犯一些让人很郁闷的问题。 今天在用VUE编写项目,发生了This relative module was not found,
Twcat_tree
2022/12/05
1.4K0
VUE项目,文件路径正确,但是This relative module was not found
训练数据严重不足,我的GAN也不会凉凉了!
近日,Nivida的研究人员研发出了一种被称为自适应鉴别器增强(ADA, Adaptive Discriminator Augmentation)的方法,直接将训练数据量减少10到20倍,此研究成果已经被发布在《用有限数据训练生成对抗网络(Training Generative Adversarial Networks with Limited Data》这篇论文中,该论文也将参加今年的NeurlPS2020会议。
公众号机器学习与AI生成创作
2020/12/18
9600
训练数据严重不足,我的GAN也不会凉凉了!
Linux系统zip压缩命令详细参数,附文件排除选项的正确用法
这次给博客添加了纯代码缓存之后,发现缓存文件竟然达到了 50 多 MB!而我的服务器每次还需要同步至七牛,文件体积的增加都会增加文件远程同步备份的时间。因此,我第一想到的办法就是在网站 ZIP 压缩打包的时候排除缓存文件夹。 下面是从网上找来的 ZIP 命令参数: zip Linux上适用的参数: -1 : 最快压缩,压缩率最差。 -9 : 最大压缩,压缩率最佳。 -b : 暂存文件的路径。这个参数一般在要产生的 zip 文件存在,而硬盘现有空间不足时。 -c : 替新增或更新的文件增加一行注解。 -d :
张戈
2018/03/23
7.2K0
Linux系统zip压缩命令详细参数,附文件排除选项的正确用法
Luminous下删除和新建OSD的正确姿势
L版本开始极大的降低了对运维操作复杂度,新增了很多命令去确保数据安全,很多新手在删除OSD的时候很容易忽视了集群PGs的状态最终导致数据丢失,因此官方加入以下几个命令
用户1260683
2018/07/31
3.2K0

相似问题

即使路径正确,rm也不会删除文件

12

即使文件路径正确,FXML文件也不会加载

11

即使路径和端点是正确的,烧瓶也不会呈现此html文件。

15

算法即使在我得到正确的结果时也不会通过测试

16

即使我列出了正确的路径,我的表单也不会转到post路由

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文