Mam tutaj fragment kodu, który się psuje, jeśli katalog nie istnieje:
System.IO.File.WriteAllText(filePath, content);
Czy w jednym wierszu (lub kilku wierszach) można sprawdzić, czy katalog prowadzący do nowego pliku nie istnieje, a jeśli nie, należy go utworzyć przed utworzeniem nowego pliku?
Używam .NET 3.5.
Odpowiedzi:
Aby utworzyć
(new FileInfo(filePath)).Directory.Create()
Przed zapisaniem do pliku..... Lub, jeśli istnieje, stwórz (inaczej nic nie rób)
źródło
Task.Run(() => );
.Możesz użyć następującego kodu
źródło
Directory.CreateDirectory
robi dokładnie to, co chcesz: tworzy katalog, jeśli jeszcze nie istnieje. Najpierw nie ma potrzeby wykonywania jawnej kontroli .path
jest plikiem, a nie katalogiem. msdn.microsoft.com/en-us/library/54a0at6s(v=vs.110).aspxJak powiedział @hitec, musisz mieć pewność, że masz odpowiednie uprawnienia, jeśli tak, możesz użyć tej linii, aby zapewnić istnienie katalogu:
Directory.CreateDirectory(Path.GetDirectoryName(filePath))
źródło
Eleganckim sposobem przeniesienia pliku do nieistniejącego katalogu jest utworzenie następującego rozszerzenia do natywnej klasy FileInfo:
Następnie użyj zupełnie nowego rozszerzenia MoveTo:
Sprawdź dokumentację rozszerzenia Metody .
źródło
Możesz użyć File.Exists, aby sprawdzić, czy plik istnieje i utworzyć go za pomocą File.Create, jeśli jest to wymagane. Sprawdź, czy masz dostęp do tworzenia plików w tej lokalizacji.
Gdy masz pewność, że plik istnieje, możesz bezpiecznie do niego zapisać. Chociaż dla zachowania ostrożności powinieneś umieścić swój kod w bloku try ... catch i wyłapać wyjątki, które funkcja może wywołać, jeśli coś nie pójdzie dokładnie zgodnie z planem.
Dodatkowe informacje dotyczące podstawowych pojęć we / wy pliku .
źródło
var filePath = context.Server.MapPath(Convert.ToString(ConfigurationManager.AppSettings["ErrorLogFile"]));
var file = new FileInfo(filePath);
file.Directory.Create();
Jeśli katalog już istnieje, ta metoda nic nie robi.var sw = new StreamWriter(filePath, true);
sw.WriteLine(Enter your message here);
sw.Close();
źródło