我在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-这是商业产品。

10-07 13:43