¿Existe mucha diferencia entre utilizar los métodos estáticos del objeto File
en lugar de crear un nuevo objeto FileInfo
y llamar a esos métodos?File.Delete() versus FileInfo.Delete()
Respuesta
La única diferencia es que File
debe resolver la ruta especificada (suponiendo que es relativo), mientras que el FileInfo
ya debería haber tener la camino resuelto.
Quiere decir que dado que la ruta es relativa, el trabajo debe realizarse inmediatamente antes de que 'File.Delete()' llame al método Win32 Delete. Mientras que con 'FileInfo', la ruta ya se habría resuelto a una ruta absoluta al momento de la creación. ¿Es esta una interpretación correcta de lo que dices? En otras palabras, este es el trabajo que CLR hace detrás de las escenas que podría afectar el rendimiento dado que 'File.Delete()' se llama con la misma frecuencia relativa. –
@TimCoker - Eso es correcto. Si ya tiene un FileInfo, puede guardar una llamada a 'Path.GetFullPathInternal', que hace un poco de trabajo para normalizar/resolver la ruta. Como señala @errorstacks, uno es un método estático y uno es una instancia. Por lo tanto, no puede llamar a FileInfo.Delete sin una instancia de FileInfo. Suponiendo que tienes eso, entonces la única diferencia es la resolución de la ruta. – CodeNaked
No, ellos están duplicados por conveniencia
Espero que esto te ayuda ...
IO.FileInfo
proporciona métodos de instancia para la creación, copiar, eliminar, mover y apertura de archivos, y ayuda en la creación de System.IO.FileStream objects
. Esta clase no puede heredarse.
eso significa que necesita crear una instancia/objeto de FileInfo para llevar a cabo este proceso.
IO.File proporciona métodos estáticos para la creación, copia, eliminación, movimiento y apertura de archivos, y ayuda en la creación de objetos System.IO.FileStream.
eso significa que no necesita crear una instancia/objeto de FileInfo para llevar a cabo este proceso.
ver los enlaces Tes Para obtener más información
http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx
Depende. Si está realizando una sola operación, use la clase File
y si está realizando varias operaciones en el mismo archivo, use FileInfo
.
EDIT: Hice este punto ya que tengo entendido que los métodos estáticos de la clase File siempre verificarán la seguridad. Pero si está reutilizando la instancia de FileInfo, los métodos harán la comprobación de seguridad solo por primera vez y no en cada una de las siguientes.
Cuando baje la votación, seguro que sería refrescante saber por qué ... Este es un sitio de preguntas y respuestas y también un recurso de aprendizaje ... si la respuesta es totalmente a la hora del almuerzo, brinde información ... – Jesse
Tengo curiosidad por la razón por la que también votaron negativamente. Hiciste un punto interesante allí. –
No he votado negativamente, pero probablemente lo hubiera hecho. Usted proporcionó un fundamento muy vago para su recomendación. Haz una copia de seguridad con referencias, si crees que es correcto. –
No, son básicamente lo mismo.
Ambos están llamando Win32Native.DeleteFile()
Casi hay ninguna diferencia. Ambos eliminan el archivo si existe y lanzan una excepción si no existe.
Eso no es cierto (al menos ya no es cierto) FileInfo.Delete no hace nada si el archivo no existe, consulte http://msdn.microsoft.com/en-us/library/system.io.fileinfo.delete(v = vs.110) .aspx – Robba
- 1. File.Delete() atómica bajo .NET
- 2. File.Delete No se borra el archivo
- 3. pymssql versus pyodbc versus adodbapi versus ...
- 4. _Expand versus new versus GNU
- 5. Control.ResolveUrl versus Control.ResolveClientUrl versus VirtualPathUtility.ToAbsolute
- 6. metaphone versus soundex versus NYSIIS
- 7. Diferencia entre File.Replace y (File.Delete + File.Move) en C#
- 8. C# File.Delete, archivo que está siendo utilizado por otro proceso
- 9. zend-framework versus Kohana versus Symfony
- 10. $ versus jQuery
- 11. ArrayList versus una matriz de objetos versus Colección de T
- 12. log4net versus TraceSource
- 13. Zend_Validate_EmailAddress versus filter_var (..., FILTER_VALIDATE_EMAIL)
- 14. R: entero versus numérico
- 15. EJS: <% = versus <% -
- 16. AesManaged versus RijndaelManaged
- 17. python.array versus numpy.array
- 18. apc_add() versus apc_store()
- 19. timeit versus timing decorator
- 20. Rails current_page? versus controller.controller_name
- 21. union versus void pointer
- 22. "REEMPLAZAR" versus INSERTAR [SI]
- 23. @ "" versus [cadena NSString]
- 24. viewDidUnload versus viewDidDisappear
- 25. @XMLRootElement versus @XmlType
- 26. clave primaria versus clave
- 27. JQuery Click versus Change
- 28. Apio versus djcelery
- 29. Math.random() versus Random.nextInt (int)
- 30. spock versus easyb
uno es estático, el otro toma una instancia, claro como la luz del día! :) – leppie