2009-11-17 7 views
6

Próbuję napisać plik przy użyciu java.io, gdzie próbuję go utworzyć w lokalizacji "some/path/to/somewhere/then-my-file". Podczas tworzenia pliku dowolny katalog na ścieżce może lub nie może istnieć. Zamiast wyrzucać wyjątek IOException, ponieważ nie ma takich katalogów, chciałbym, aby katalogi były tworzone w przejrzysty sposób, gdy jest to wymagane.Metoda w języku Java, aby utworzyć plik w lokalizacji, tworząc w razie potrzeby katalogi?

Czy istnieje metoda, która utworzy wszystkie katalogi wymagane przy pisaniu pliku? Szukam czegoś w Java SDK, lub w lekkiej bibliotece, którą mogę dodać do ścieżki klasy, np. Apache Commons IO.

P.S. Dla jasności, już zakodowałem rozwiązanie, które działa na dość wąski sposób, który testuję, więc naprawdę nie potrzebuję sugestii, jak napisać metodę, której szukam. Szukam metody, która będzie dość dobrze przetestowana i na wielu platformach.

Odpowiedz

24

new File("some/path/to/somewhere/then-my-file").getParentFile().mkdirs()

+2

+1. Jesteś zbyt szybki – ChssPly76

+1

Przepraszam ... moja klawiatura się rozpaliła teraz ... nie może .... wpisz ... – skaffman

+0

Niesamowite, dziękuję. – Grundlefleck

2

Ponieważ pytanie wspomniał również bibliotekę Apache Commons IO, zgłosić się następujące rozwiązanie, które wykorzystuje ten miły Biblioteka:

File file = new File("... the directory path ..."); 
FileUtils.forceMkdir(file); 

Rozwiązanie to wykorzystuje klasę FileUtils, z pakiet org.apache.commons.io i metoda forceMkdir, która "Tworzy katalog, w tym wszelkie niezbędne, ale nieistniejące katalogi nadrzędne".

+1

TS chce zrobić plik _regularny. Wtedy byłoby to jak 'FileUtils.forceMkdir (regularFile.getParentFile())' lub 'FileUtils.forceMkdirParent (regularFile)' od wersji 2.5 –

+0

Dobre złapanie! Możesz edytować odpowiedź, aby ją poprawić. Komentarze często nie są czytane – JeanValjean

Powiązane problemy