java - File.listFiles () konflikter med sletning af filer

Indlæg af Hanne Mølgaard Plasc

Problem



Opfører File.listFiles() obtrusivt i en mappe? Indeholder den fil og/eller mappehåndtag? Går det cd i mappen?


En af mine processer kalder Java 's File.listFiles() på en mappe, og en anden forsøger at slette den samme mappe (f.eks. Ved hjælp af C # 's Directory.Delete(DIRECTORY, true);). Sletningen mislykkes med 'mappen er ikke tom' (som er en Windows fejlmeddelelse). Min mistank er, at File.listFiles() på en eller anden måde kommer i vejen, selvom den kun udfører en læseoperation.


NB: Java-processen læser mappen rekursivt (hvis den finder underdier, læser den også). Således er det helt muligt at


Directory.Delete(DIRECTORY, true)


er faktisk kolliderer med


(new File(SUBDIRECTORY)).listFiles()


Selvfølgelig holder Java-læseren af ​​SUBDIRECTORY nogle slags håndtag på SUBDIRECTORY. Vil det forhindre, at forældrenes DIRECTORY sletter?

Bedste reference


Jeg har nu bekræftet, at File.list() (men sandsynligvis også File.listFiles()) kan faktisk forårsage dette. Se mine kommentarer ovenfor, samt de gory detaljer i den tilsvarende TeamCity fejlrapport. [10]