¿Cuál es la diferencia, si hay alguna?Diferencia entre 'File.Open()' y 'new FIleStream()'
Respuesta
Ninguno.
File.Open es, a nivel interno, nada más que:
public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share)
{
return new FileStream(path, mode, access, share);
}
Si no utiliza la sobrecarga que especifica un FileAccess y FileShare, especifica esto para usted (usando FileShare.NONE y FileAccess .Escribir en agregar o ReadWrite de lo contrario).
Dicho esto, este es un detalle de implementación, que no forma parte de la documentation. Técnicamente, un futuro .NET Framework versión podría utilizar una implementación diferente, aunque me parece poco probable.
File.Open()
es un método de conveniencia. Internamente se implementa como:
public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share)
{
return new FileStream(path, mode, access, share);
}
Este tipo de duplicación es muy raro en .NET framework. Pero hay una historia sobre esta, contada por Krzysztof Cwalina en this lecture. Hicieron un estudio de usabilidad en una versión anterior del framework, pidiendo a un grupo de programadores con experiencia (pero por lo demás con .NET agnóstico) que escribieran código usando las clases FileStream y StreadReader/Writer.
No salió bien, que tiene un 100% de tasa de fracaso. Respondieron agregando métodos a la clase System.IO.File, utilizando el enfoque de "más probabilidades de caer en el pozo del éxito".
Cool video por cierto, si usted está en todo en las razones del marco ve la forma en que se ve.
Mejor publicar una respuesta real: el método File.Open() llama al constructor FileStream, pasando valores para FileAccess y FileShare (si no los especifica) que son más propensos a hacer lo correcto. Que es FileAccess.ReadWrite y FileShare.None.
puede actualizar enlace de conferencia? – brumScouse
Actualizado. Ten en cuenta que es un archivo .zip de 500MB. –
El enlace está roto de nuevo – HeyJude
- 1. diferencia entre la secuencia de la memoria y filestream
- 2. ¿Cuál es la diferencia entre new-itemproperty y set-itemproperty?
- 3. C#: Diferencia entre '+ = anEvent' y '+ = new manejador de sucesos (anEvent)'
- 4. En Javascript, la diferencia entre 'Object.create' y 'new'
- 5. ¿Hay alguna diferencia entre `new Image()` y `document.createElement ('img')`?
- 6. Diferencia entre Date (dateString) y new Date (dateString)
- 7. Diferencia entre MyClass.prototype = new Object() y MyClass.prototype = Objeto
- 8. OOP: diferencia entre ArrayList al = new ArrayList() y List al = new ArrayList()?
- 9. ¿Diferencia entre == y caso?
- 10. ¿Por qué existe la diferencia entre Response.Redirect vs new RedirectResult()?
- 11. Diferencia entre FileStreamResult y FilePathResult?
- 12. FileStream y crear carpetas
- 13. Ruby's File.open y la necesidad de f.close
- 14. File.open y bloques en Ruby 1.8.7
- 15. Delphi, FileStream y MemoryStream
- 16. Diferencia entre StreamWriter/Reader y StringWriter/Readerll
- 17. Ruby Regexp: diferencia entre new y union con una sola expresión regular
- 18. ¿Cuál es la diferencia entre llamar Double.valueOf (String s) y new Double (String s)?
- 19. C#: ¿cuál es la diferencia entre algunEvento + = Método y algunEvento + = new Delegado (Método)
- 20. La diferencia entre Executors.newSingleThreadExecutor(). Execute (command) y new Thread (command) .start();
- 21. LINQ - La diferencia entre .Select (n => n.Name) y .Select (n => new {n.Name});
- 22. & new MyClass() vs new MyClass() en PHP
- 23. Diferencia entre BeginInvoke y Thread.Start
- 24. diferencia entre ObservableCollection y BindingList
- 25. Diferencia entre R.layout y android.R.layout
- 26. Diferencia entre String.isEmpty() y String.equals ("")
- 27. Diferencia entre covarianza y upcasting
- 28. MySQL: diferencia entre ', `,' y"
- 29. Diferencia entre objeto y *?
- 30. Diferencia entre. y #
... junto a sus hermanos y File.OpenRead File.OpenText – Powerlord