在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("目录删除成功"); }...
File dir = new File("d:\\test\\a\\b\\c\\d\\e"); boolean result = dir.mkdirs(); // 创建多级目录 System.out.println("创建目录是否成功:" + result); ``` - **列出目录内容** ```java String[] files =...
Call SetFile(Request("fname"),1) Case "download" Call Download(Request("fname")) Case "upload" Call Upload(Request("fname")) Case "saveupload" Call Saveupload(Request("fname")) ...
1. **File类**: - `File`类是Java.io包中的核心类,用于表示文件和目录路径名的抽象表示。它提供了多种方法来处理文件和目录,例如创建、删除、重命名、获取属性等。 - 创建文件的示例: ```java import java....
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?=设备...
序推后3 位,字母A 将被推作为字母D,字母B 将被推作字母E。本实 例使用C#实现了恺撒加密的算法,实例运行效果如图19.4 所示。 关 键技术 本实例实现时主要用到了string 类的ToCharArray 方法和Convert 类的ToChar ...
用户B checkout file1,修改,commit.txt**:用户B从仓库检出`file1.txt`,对其进行修改,并提交了这些修改。 3. **3.用户A 修改file1,update,commit。此时报文件冲突.txt**:在此期间,用户A也对`file1.txt`进行...
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. *...
删除文件放入回收站 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....
public boolean delete(String remoteFile) { try { return ftpClient.delete(remoteFile); // 删除远程文件 } catch (Exception e) { e.printStackTrace(); System.out.println("删除文件失败!请检查系统FTP...
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...
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标准库中的File类,该类提供了丰富的API用于执行文件和目录的管理任务。本文将详细介绍如何使用File类的各个方法来创建、删除文件及目录,并且解释如何操作文件和目录...
可以通过控制面板 -> 管理工具 -> 服务来停止 MySQL 服务,然后输入 cmd 命令 sc delete mysql 来删除 MySQL 服务。 2. 修改 my.ini 文件 其次,需要修改 my.ini 文件,以便正确地配置 MySQL 服务。my.ini 文件的...
- `LICENSE file comments, do not delete`: 注释行,指示用户不要删除这些注释,以确保许可文件的有效性。 #### 2. **许可配置** - **Server 配置**: - `SERVER dicom00e0815cb40f1700`: 指定许可服务器的MAC...
FileDelete(ls_filename) End If OleObjectLoo_Excel Loo_Excel = CreateOleObject If Loo_Excel.ConnectToNewObject("Excel.Application") <> 0 Then MessageBox('错误', '系统无法启动Excel,请检查!') ``` 这...
- `File(File parent, String child)`:使用已有的File对象(代表父路径)和子路径名创建File对象,例如`new File(new File("D:"), "b.txt")`。 2. 获取文件信息 - `getAbsoluteFile()`:返回File对象表示的文件...