Cuando usamos Java para escribir algo en un archivo, podemos hacerlo de las siguientes dos formas. Uno usa FileOutputStream, el otro usa FileWriter.
Usando FileOutputStream:
File fout = new File(file_location_string); FileOutputStream fos = new FileOutputStream(fout); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fos)); out.write("something"); |
Usando FileWriter:
FileWriter fstream = new FileWriter(file_location_string); BufferedWriter out = new BufferedWriter(fstream); out.write("something"); |
Ambos funcionarán, pero ¿cuál es la diferencia entre FileOutputStream y FileWriter?
Hay mucha discusión sobre cada una de esas clases, ambas son buenas implementaciones del concepto de E / S de archivos que se pueden encontrar en un sistema operativo general. Sin embargo, no nos importa cómo está diseñado, solo cómo elegir uno de ellos y por qué elegirlo de esa manera.
De la especificación de la API de Java:
FileOutputStream está diseñado para escribir flujos de bytes sin procesar, como datos de imagen. Para escribir secuencias de caracteres, considere usar FileWriter.
Si está familiarizado con los patrones de diseño, FileWriter es un uso típico del patrón Decorator en realidad. He utilizado un sencillo tutorial para demostrar el patrón Decorator, ya que es muy importante y muy útil para muchos diseños.
Una aplicación de FileOutputStream está convirtiendo un archivo en una matriz de bytes.