Jak sprawdzić, czy plik istnieje w C # / .NET?


186

Chciałbym przetestować ciąg zawierający ścieżkę do pliku na obecność tego pliku (coś takiego jak -etest w Perlu lub os.path.exists()w Pythonie) w C #.

Odpowiedzi:


303

Posługiwać się:

File.Exists(path)

MSDN: http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx

Edycja: w System.IO


14
File.Exists (ścieżka) zwraca false, nawet jeśli plik istnieje, ALE osoba dzwoniąca nie ma uprawnień do odczytu. Czy istnieje inny sposób radzenia sobie z tego rodzaju sytuacjami i sprawdzania, czy plik istnieje, nawet jeśli osoba dzwoniąca nie może go odczytać?
ADTC

3
@ ADTC: z punktu widzenia bezpieczeństwa brzmi normalnie, że działa w ten sposób, z punktu widzenia programisty może to skomplikować sytuację. Czy w takim przypadku pojawia się wyjątek, jeśli próbujesz utworzyć plik?
user276648,

2
@ ADTC właśnie się potknąłem i pomyślałem, że mogę wspomnieć o katalogach rozwijanych. Można je skonfigurować tam, gdzie masz uprawnienia do tworzenia lub zapisu, ale nie masz uprawnień do odczytu. Nie chodzi o to, że ma to bezpośrednie znaczenie dla tego pytania, tylko że nie są tak dziwne, jak mogłoby się wydawać.
Ukko

1
Uwaga dodatkowa: File.Exists zwraca False na dysku Google Strumień plików G: dysk, jeśli obudowa ścieżki nie pasuje dokładnie do tego, co faktycznie jest na G :. Zwykle na obudowie dysku fizycznego nie ma znaczenia, więc zastanawiam się, czy jest coś nie tak z metodą Exists?
CTZStef,

1
@CTZStef to dziwactwo wirtualnego dysku google, a nie metody frameworka.
Eugene Mayevski „Callback



4

Podaj pełną ścieżkę jako dane wejściowe. Unikaj ścieżek względnych.

 return File.Exists(FinalPath);
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.