File.Delete () и FileInfo.Delete () - PullRequest
       10

File.Delete () и FileInfo.Delete ()

14 голосов
/ 15 октября 2011

Есть ли большая разница между использованием статических методов объекта File по сравнению с созданием нового объекта FileInfo и вызовом этих методов?

Ответы [ 7 ]

11 голосов
/ 15 октября 2011

Единственное отличие состоит в том, что File должен разрешать указанный путь (при условии, что он является относительным), тогда как FileInfo должен уже иметь разрешенный путь.

6 голосов
/ 15 октября 2011

Оба звонят Win32Native.DeleteFile()

1 голос
/ 15 октября 2011

Нет, они в основном одно и то же.

1 голос
/ 15 октября 2011

Это зависит.Если вы выполняете одну операцию, используйте класс File, а если вы выполняете несколько операций над одним и тем же файлом, используйте FileInfo.

РЕДАКТИРОВАТЬ: я сделал это, поскольку я понимаю, что класс Fileстатические методы всегда проверяют безопасность.Но если вы повторно используете экземпляр FileInfo, методы будут выполнять проверку безопасности только в первый раз, а не при каждом последующем вызове.

1 голос
/ 15 октября 2011

Надеюсь, это поможет вам ...

IO.FileInfo предоставляет методы экземпляра для создания, копирования, удаления, перемещения и открытия файлов, а также помогает в создании System.IO.FileStream objects. Этот класс не может быть унаследован.

это означает, что вам нужно создать экземпляр / объект FileInfo для выполнения этих процессов.

IO.File предоставляет статические методы для создания, копирования, удаления, перемещения и открытия файлов, а также помогает в создании объектов System.IO.FileStream.

Это означает, что вам не нужно создавать экземпляр / объект FileInfo для выполнения этих процессов.

см. Ссылки для дополнительной информации

http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx

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

0 голосов
/ 15 октября 2011

Почти нет разницы.И удалите файл, если он существует, и сгенерируйте исключение, если он не существует.

0 голосов
/ 15 октября 2011

Нет, они для удобства продублированы

...