我在删除方法上遇到以下错误:
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();
}
答案 0 :(得分:1)
SMB协议不会提供此信息。
您可以做的是使用创建请求中的delete on close
位标记要删除的文件,这是SMB功能。
我不知道jCif是否具备此功能,有几个java SMB客户端支持此问题。 (甚至不仅支持SMBv1)