使用SMB尝试复制后删除文件

时间:2017-12-12 16:33:29

标签: java smb

我在删除方法上遇到以下错误:

jcifs.smb.SmbException:进程无法访问该文件,因为该文件正由另一个进程使用。

如何确保文件没有锁定以便删除?

我的代码:

try{

   NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(attachmentRoot_DOMAIN,attachmentRoot_ID,attachmentRoot_PW);
   NtlmPasswordAuthentication auth2 = new NtlmPasswordAuthentication(drawings_DOMAIN,drawings_ID,drawings_PW);

   SmbFile fromfile = new SmbFile("smb:" + dldf.getDldrawingfile(), auth, SmbFile.FILE_SHARE_READ|SmbFile.FILE_SHARE_WRITE|SmbFile.FILE_SHARE_DELETE);

   SmbFile toFile = new SmbFile(drawings_PATH + new DrawingNumberSubDirectory(dldf.getDrawingnumber()).getDrawingnumbersubdirectory() + "/" + dldf.getShortfilename() + ".PDF", auth2);
   fromfile.copyTo(toFile);


   fromfile.delete();
   }
   catch(Exception e){
       System.out.println("DocsVisionDrawingList: AcrobatRotateAndMerge_2: " + e);
       e.printStackTrace();
   }

1 个答案:

答案 0 :(得分:1)

SMB协议不会提供此信息。 您可以做的是使用创建请求中的delete on close位标记要删除的文件,这是SMB功能。

我不知道jCif是否具备此功能,有几个java SMB客户端支持此问题。 (甚至不仅支持SMBv1)