我在delete方法上遇到以下错误:
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();
}
最佳答案
SMB协议没有为您提供此信息。
您可以使用创建请求中的delete on close
位将文件标记为删除,这是SMB功能。
我不知道jCifs是否具有此功能,有几个Java SMB客户端支持此问题。 (甚至不仅支持SMBv1)
您可以检查visuality systems jNQ product-这是商业产品。