Biorąc pod uwagę możliwą pełną ścieżkę do pliku, na przykład podam C: \ dir \ otherDir \ possiblefile Chciałbym poznać dobre podejście do wyszukiwania się, czySprawdź, czy istnieje plik lub katalog nadrzędny, podając możliwą pełną ścieżkę do pliku
C: \ dir \ otherDir \ possiblefile pliku
lub C: \ dir \ otherDir katalog
istnieje. Nie chcę tworzyć folderów, ale chcę utworzyć plik, jeśli nie istnieje. Plik może mieć rozszerzenie lub nie. chcę osiągnąć coś takiego:
wymyśliłem rozwiązanie, ale jest to trochę przesada, moim zdaniem. Powinien istnieć prosty sposób robienia tego.
Oto mój kod:
// Let's example with C:\dir\otherDir\possiblefile
private bool CheckFile(string filename)
{
// 1) check if file exists
if (File.Exists(filename))
{
// C:\dir\otherDir\possiblefile -> ok
return true;
}
// 2) since the file may not have an extension, check for a directory
if (Directory.Exists(filename))
{
// possiblefile is a directory, not a file!
//throw new Exception("A file was expected but a directory was found");
return false;
}
// 3) Go "up" in file tree
// C:\dir\otherDir
int separatorIndex = filename.LastIndexOf(Path.DirectorySeparatorChar);
filename = filename.Substring(0, separatorIndex);
// 4) Check if parent directory exists
if (Directory.Exists(filename))
{
// C:\dir\otherDir\ exists -> ok
return true;
}
// C:\dir\otherDir not found
//throw new Exception("Neither file not directory were found");
return false;
}
Wszelkie sugestie?
Tak, poza tym, całkiem nieźle. –
Teraz jest zdecydowanie krótszy, oszczędza mi ręcznego parsowania i obsługuje alternatywne separatory. Dokładnie to, czego szukałem! – Joel