2010-09-28 11 views
8

config W mojej aplikacji mam ścieżka, na przykład „logs \ Updater \ updater.log”Utwórz plik ze ścieżką tworzenia podkatalogów, jeśli nie istnieje

Uruchamianie aplikacji, chcę utworzyć plik updater.log, tworząc wszystkie podfoldery, jeśli nie istnieją.

Tak więc, jeśli jutro mój użytkownik zmieni ścieżkę w config do "logs \ mypathisbetter \ updater.log", moja aplikacja będzie kontynuowała pracę, zapisując log do nowego pliku.

File.Create, FileInfo.Create, Streamwriter.Create czyli tak: robią to?

Czy muszę sprawdzić, czy istnieją już foldery?

Nie mogę znaleźć jasnej odpowiedzi na to pytanie w Internecie.

+0

http://msdn.microsoft.com/en-us/library/54a0at6s.aspx – skst

Odpowiedz

13

rozwiązać za pomocą trochę kodu:

private static void EnsureDirectoryExists(string filePath) 
{ 
    FileInfo fi = new FileInfo(filePath); 
    if (!fi.Directory.Exists) 
    { 
    System.IO.Directory.CreateDirectory(fi.DirectoryName); 
    } 
} 

Niestety do tego naprawdę newbie post ... Dziękuję wszystkim! :-)

+0

Twoje podejście jest wdzięczne za modulowanie scenariusza –

9

Nie, nie wydają się - dostaniesz DirectoryNotFoundException, wierzę we wszystkie trzy.

Najpierw musisz zrobić coś takiego, jak Directory.CreateDirectory(path).

EDIT:

Dla nieco bardziej pełnego rozwiązania, które zaczyna się od ścieżki w tym pliku, spróbuj:

Directory.CreateDirectory(Path.GetDirectoryName(fullPath)); 

    TextWriter writer = new StreamWriter(fullPath); 
    writer.WriteLine("hello mum"); 
    writer.Close(); 

Ale pamiętać trzeba trochę zbyt obsługi błędów, aby pisarz zawsze był zamknięty (w "końcu" bloku).

+0

W rzeczywistości też próbowałem. Jest "najlepsza praktyka" do wykonania tej pracy? Kilka pomysłów? :-) –

+0

Zaktualizowałem moją odpowiedź, czy to pomaga? –

+0

rozwiązać za pomocą trochę kodu: \t \t private static void CreateFile (filePath string) \t \t { \t \t \t FileInfo fi = new FileInfo (filePath); \t \t \t jeśli \t \t \t { \t System.IO.Directory.CreateDirectory (fi.DirectoryName) (fi.Directory.Exists!); \t \t \t} \t \t} –

Powiązane problemy