[jcifs] Getting concurrency error when deleting a file

Michael B Allen ioplex at gmail.com
Tue Mar 3 01:52:49 GMT 2009


On Mon, Mar 2, 2009 at 1:46 PM, Hugo Palma <hugo.m.palma at gmail.com> wrote:
> Hi all,
> a have a very simple use case where i want to get all the file in a
> directory, iterate over them a delete a few.
> My code is something like:
>
> SmbFile folder = new SmbFile("smb://myfolder");
> for (SmbFile file : folder.listFiles()) {
>     // do something
>
>    file.delete();
> }
>
> It seems that if that "do something" doesn't include calling the
> "getInputStream" method on the file everything goes fine. But if it does i
> get the following error on the delete operation:

I would think that that should still work since I thought
getInputStream opened the file with a permissible shareAccess. Perhaps
not.

Anyway, try calling close() on the InputStream before you delete().

Mike

>
> jcifs.smb.SmbException: The process cannot access the file because it is
> being used by another process.
>         at
> jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:522)
>         at
> jcifs.smb.SmbTransport.send(SmbTransport.java:622)
>         at
> jcifs.smb.SmbSession.send(SmbSession.java:239)
>         at
> jcifs.smb.SmbTree.send(SmbTree.java:109)
>         at
> jcifs.smb.SmbFile.send(SmbFile.java:718)
>         at
> jcifs.smb.SmbFile.delete(SmbFile.java:2342)
>         at jcifs.smb.SmbFile.delete(SmbFile.java:2286)
>
>
> Any idea why this is happening ? Clearly some resource if being left open
> but i don't see any close method.
> Thanks
>



-- 
Michael B Allen
Java Active Directory Integration
http://www.ioplex.com/


More information about the jcifs mailing list