`

b= file1.delete();删除总是失败

阅读更多

在sftp上传后,需要删除临时文件。发现总是删除不了。

代码如下: 

System.out.println(file1.isFile() +"  "+file1);
      System.out.println("是否存在"+file1.exists());
      boolean b = false;
      if(file1.exists()){
       b=  file1.delete();
      }
     System.out.println("--> b "+ b);
     boolean b2=chkfile1.delete();
     System.out.println("--> b2 "+ b2);

运行结果:

true  E:\a\a\localPath\E_20151201_500_ORDER_GROUP.dat
是否存在true
--> b false

--> b2 false

在中午断点,等吃了饭走完断点发现,竟然删除。

------------------------------------------------------------------

解决原因:

百度了很多都说

1:流未关闭

2:文件被占用

3:如果删除的是文件夹,需要使用listfile进行处理。

可是我查询自己代码,发现我在调用sftp上传的utils的时候,我的流都关闭了。怎么都想不通。

没办法,写了个线程,sleep了很久。

但是这不是解决办法。

根据分析可以知道。如果把sftp上传方法注释掉就可以删除了。锁定目标后,

查看sftp上传发现原来在sftp上传后没有关闭流。

修改之前sftp上传代码:

 sftp.cd(directory);
            for(String uploadFile : uploadFiles) {
             File file=new File(uploadFile);
                sftp.put(new FileInputStream(file), file.getName());
            }

 

修改后的代码:

 try {
            sftp.cd(directory);
            File file=new File(uploadFile);
            FileInputStream files = new FileInputStream(file);
           
            sftp.put(files, file.getName());
            try {
    files.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
        } catch (SftpException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

 

忽略上传前的for循环。

总结:

流未关闭的多是这种情况。

出现情况:

1:你自己所写的代码使用的流未关闭

2:调用工具类时候,工具类中的流未关闭。【鄙人就是遇到这个问题。因为sftp上传工具类不是本人写的】

 

 

分享到:
评论

相关推荐

    文件的创建与删除

    String dirPath = "E:/workspace/file/WebRoot/css/jdk/b"; java.io.File myDirPath = new java.io.File(dirPath); if (myDirPath.exists()) { if (myDirPath.delete()) { System.out.println("目录删除成功"); }...

    Java实训教程 Java软件开发实战 Java类库 第5章 io操作 共35页.pptx

    File dir = new File("d:\\test\\a\\b\\c\\d\\e"); boolean result = dir.mkdirs(); // 创建多级目录 System.out.println("创建目录是否成功:" + result); ``` - **列出目录内容** ```java String[] files =...

    fso浏览54646465465464564

    Call SetFile(Request("fname"),1) Case "download" Call Download(Request("fname")) Case "upload" Call Upload(Request("fname")) Case "saveupload" Call Saveupload(Request("fname")) ...

    java 基础知识资料下载

    1. **File类**: - `File`类是Java.io包中的核心类,用于表示文件和目录路径名的抽象表示。它提供了多种方法来处理文件和目录,例如创建、删除、重命名、获取属性等。 - 创建文件的示例: ```java import java....

    IO输入输出留

    1 File f=new File("d:/abc") (d:\\abc) 2 File f=new File ("目录","文件名") 创建一个 File 封装对象 可以不存在 方法 -------------------------------------------- 文件、目录属性方法 文件、目录属性 ...

    高清监控系统兼容所有网络摄像机

    Open update file failed please check if the update file exist=打开文件失败,请检查升级文件是否存在! Open Version file fail=打开版本文件失败 Download:=下载进度: Restart the device, are you sure?=设备...

    c# 加密和解密相关代码

    序推后3 位,字母A 将被推作为字母D,字母B 将被推作字母E。本实 例使用C#实现了恺撒加密的算法,实例运行效果如图19.4 所示。 关 键技术 本实例实现时主要用到了string 类的ToCharArray 方法和Convert 类的ToChar ...

    SVN解决文件冲突conflict的方法_类文件冲突

    用户B checkout file1,修改,commit.txt**:用户B从仓库检出`file1.txt`,对其进行修改,并提交了这些修改。 3. **3.用户A 修改file1,update,commit。此时报文件冲突.txt**:在此期间,用户A也对`file1.txt`进行...

    java之File对象对文件的操作常用的几个方法(推荐)

    1. **构造器**: `File(String path)` 用于创建一个表示指定路径的`File`对象。例如: ```java File file = new File("E:/android_demo/a"); File fileTest = new File("E:/android_demo/a/test.mp3"); ``` 2. *...

    程序片段-CAD开发中常见问题.rar

    删除文件放入回收站 SHFILEOPSTRUCT FileOp; FileOp.hwnd = NULL; FileOp.wFunc = FO_DELETE; FileOp.pFrom = _T("C:Test.txt"); FileOp.pTo = NULL; FileOp.fFlags = FOF_ALLOWUNDO | FOF_NOERRORUI; if ( ::...

    发送程序-源码

    if QueryData(Q, 'SELECT * FROM tblMotorphoto a INNER JOIN tblMotorPhotoMaster b ON a.acc_id_only = b.acc_id_only WHERE (b.PicturePath7 IS NULL) order by b.acc_id_only desc ', 1) then if Q....

    JAVA中的FtpClient与FTPClient,并实现jsp面下载ftp服务器上的文件.docx

    public boolean delete(String remoteFile) { try { return ftpClient.delete(remoteFile); // 删除远程文件 } catch (Exception e) { e.printStackTrace(); System.out.println("删除文件失败!请检查系统FTP...

    wordtopdf转换

    var PDF = new ActiveXObject("PDFDistiller.PDFDistiller.1"); word.ActivePrinter = "MSPublisherColorPrinter"; var docfile = files(0); var psfile = files(1) + fso.GetBaseName(files(0)) + ".ps"; var pdf...

    ZendFramework中文文档

    1. Introduction to Zend Framework 1.1. 概述 1.2. 安装 2. Zend_Acl 2.1. 简介 2.1.1. 关于资源(Resource) 2.1.2. 关于角色(Role) 2.1.3. 创建访问控制列表(ACL) 2.1.4. 注册角色(Role) 2.1.5. 定义访问...

    Java创建删除文件和目录的方法(推荐)

    Java创建和删除文件与目录的方法主要依托于Java标准库中的File类,该类提供了丰富的API用于执行文件和目录的管理任务。本文将详细介绍如何使用File类的各个方法来创建、删除文件及目录,并且解释如何操作文件和目录...

    mysql 发生系统错误1067的解决方法

    可以通过控制面板 -> 管理工具 -> 服务来停止 MySQL 服务,然后输入 cmd 命令 sc delete mysql 来删除 MySQL 服务。 2. 修改 my.ini 文件 其次,需要修改 my.ini 文件,以便正确地配置 MySQL 服务。my.ini 文件的...

    idl8.0 license.dat

    - `LICENSE file comments, do not delete`: 注释行,指示用户不要删除这些注释,以确保许可文件的有效性。 #### 2. **许可配置** - **Server 配置**: - `SERVER dicom00e0815cb40f1700`: 指定许可服务器的MAC...

    PB对Excel的操作

    FileDelete(ls_filename) End If OleObjectLoo_Excel Loo_Excel = CreateOleObject If Loo_Excel.ConnectToNewObject("Excel.Application") <> 0 Then MessageBox('错误', '系统无法启动Excel,请检查!') ``` 这...

    Java-文件操作File类

    - `File(File parent, String child)`:使用已有的File对象(代表父路径)和子路径名创建File对象,例如`new File(new File("D:"), "b.txt")`。 2. 获取文件信息 - `getAbsoluteFile()`:返回File对象表示的文件...

Global site tag (gtag.js) - Google Analytics