After experiencing issues with mkdirs() and poking around the interwebs, I get the impression that there are thread safety issues with mkdirs().
Is there a way to ensure the directories are properly created when it is possible that multiple threads might be trying to create similar file structures?
Thanks
(In my case I will be using this on Android)
解决方案
Okay, I know this has been inactive for a while, but I thought perhaps there was a simple solution. The article you linked in the comments on the question seems to indicate that the only problem is directories not being created. The solution there was to do this:
if (!f.mkdirs()) {
f.mkdirs();
}
However, that seems inefficient and can still have problems. So, why not simply do this:
while (!f.mkdirs()) {}
Simple, but it works.
EDIT: After thinking a bit, that example may lag to oblivion and could cause thread lock. So, this might be a better idea:
while (!f.mkdirs()) { Thread.yield(); }
Of course, that would only be recommended if you're in a thread that could cause thread lock, and as long as it's not a high-priority situation. Just putting this out there.