[jcifs] Getting concurrency error when deleting a file

Hugo Palma hugo.m.palma at gmail.com
Mon Mar 2 18:46:23 GMT 2009


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:

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
-------------- next part --------------

3j?Zr???
???y??v?????


More information about the jcifs mailing list