[jcifs] File Lock issue

Allen, Michael B (RSCH) Michael_B_Allen at ml.com
Tue Sep 10 10:32:11 EST 2002


This is right. The file is just locked. Nothing jCIFS can do about that. Put your try/catch *inside* your enumeration loop and get by these.

> -----Original Message-----
> From:	John Kudrle [SMTP:johnk at telestream.net]
> Sent:	Monday, September 09, 2002 7:35 PM
> To:	'jcifs at samba.org'
> Cc:	Shawn Carnahan
> Subject:	[jcifs] File Lock issue
> 
> 
>         Hi, 
> 
>         I was hoping someone could let me know if the following situation is a bug (versus the intended effect) with the more recent releases of JCIFS.
> 
>         I am using JCIFS to enumerate a directory structure on a remote machine and I am receive an exception if any of the files located in this directory (on the remote machine) are in use by
> another process.
> 
>         The exception dump follows: 
> 
>         jcifs.smb.SmbException: The file is being used by another process 
>         at jcifs.smb.SmbTransport.sendTransaction(SmbTransport.java:620) 
>         at jcifs.smb.SmbSession.sendTransaction(SmbSession.java:89) 
>         at jcifs.smb.SmbTree.sendTransaction(SmbTree.java:65) 
>         at jcifs.smb.SmbFile.sendTransaction(SmbFile.java:504) 
>         at jcifs.smb.SmbFile.queryPath(SmbFile.java:804) 
>         at jcifs.smb.SmbFile.exists(SmbFile.java:859) 
>         at jcifs.smb.SmbFile.isHidden(SmbFile.java:960) 
> 
> 
>         I have verified this behavior in jcifs-0.6.5 and jcifs-0.7.0. 
> 
>         I saw that a situation very similar to this was noted and corrected in jcifs-0.5b2.  I am running into this situation when I attempt to enumerate the top level directory on a remote machine
> (on the remote server, the C:\ drive is shared as the name "CDrive").   I am scanning through the files in \\remoteMachine\CDrive and invoke the isHidden() method on them, I eventually encounter the
> IO.sys file (it is residing on the main C partition on the remote machine) which is of course in use by the operating system.  The isHidden() routine throws the above exception.
> 
>         Strangely enough, in the older version of JCIFS (jcifs 0.51), this problem is not present. 
> 
>         Below is a quick pseudo-code segment of what I am doing: 
> 
> 
> 
>         jcifs.smb.SmbFile share = new jcifs.smb.SmbFile (url);                  // url = address to remote share with appropriate credentials
> 
>         String[] list = share.list(); 
> 
>         for (int i=0; i< list.length; i++) 
>         { 
>                 jcifs.smb.SmbFile child = new jcifs.smb.SmbFile (url, list[i]); 
> 
>                 if (child.isHidden() == true) 
>                 { 
>                 .. 
>                 .. 
>                 .. 
>                 } 
>         } 
> 
>         The isHidden() call above is the call that is causing the exception if the target file (in my case the IO.sys) is being used by another process.
> 
> 
>         -john 
>         
>         
> 




More information about the jcifs mailing list