¿Cuál es la forma más sencilla de escribir un archivo de texto en java

Hola, me pregunto ¿cuál es la forma más fácil (y más simple) manera de escribir un archivo de texto en java. Por favor, ser simple, ya que soy un principiante 😀
He buscado en la web y encontré este código, pero entiendo que el 50% de la misma.

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class WriteToFileExample {
public static void main(String[] args) {
    try {

        String content = "This is the content to write into file";

        File file = new  File("C:/Users/Geroge/SkyDrive/Documents/inputFile.txt");

        //if file doesnt exists, then create it
        if (!file.exists()) {
            file.createNewFile();
        }

        FileWriter fw = new FileWriter(file.getAbsoluteFile());
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write(content);
        bw.close();

        System.out.println("Done");

    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

  • Yo creo que no hay código más fácil que esto. Podrías especificar qué no entienden?
  • Gracias por tu respuesta! Bueno, yo no entiendo el qué la FileWriter y BufferedWriter hacer. Ah, y el carch(IOExeption) parte al final. Por favor, ¿me puedes explicar brevemente lo que hacer.

8 Kommentare

  1. 78

    Con Java 7 y hasta, un forro con Los archivos:

    String text = "Text to save to file";
    Files.write(Paths.get("./fileName.txt"), text.getBytes());
    • Que es simple, de hecho! Gracias! 🙂
    • Probablemente debería especificar un conjunto de caracteres.
    • Estoy de acuerdo, pero la pregunta era para el la forma más sencilla y esto es lo simple que puede ser la OMI.
    • Se esta anexar o sobrescribir el archivo especificado?
    • El último @Peri461
    • Anexar al archivo, creo que se puede hacer Files.write(myPath, myString.getBytes(), StandardOpenOption.APPEND) Hay algunas otras opciones que se pueden utilizar, también.

  2. 20

    Usted puede hacer esto mediante el uso de JAVA 7 nueva File API.

    ejemplo de código:
    `

    public class FileWriter7 {
        public static void main(String[] args) throws IOException {
            List<String> lines = Arrays.asList(new String[] { "This is the content to write into file" });
            String filepath = "C:/Users/Geroge/SkyDrive/Documents/inputFile.txt";
            writeSmallTextFile(lines, filepath);
        }
    
        private static void writeSmallTextFile(List<String> aLines, String aFileName) throws IOException {
            Path path = Paths.get(aFileName);
            Files.write(path, aLines, StandardCharsets.UTF_8);
        }
    }

    `

    • Tenga en cuenta que este es por lejos el más sencillo ya que todo lo que realmente necesitamos es: Archivos.write(archivo.toPath(), el contenido.getBytes()); para cumplir con la pregunta original metas.
  3. 15

    Puede utilizar FileUtils de Apache Commons:

    import org.apache.commons.io.FileUtils;
    
    final File file = new File("test.txt");
    FileUtils.writeStringToFile(file, "your content", StandardCharsets.UTF_8);
    • Si tiene varias líneas, puede utilizar .writeLines(). Y se cierra todo correctamente en el caso de las excepciones, y no hay problemas de seguridad con System.getProperty. Todo esto es un dolor sin commons.
  4. 7

    Anexar el archivo FileWriter(String fileName,
    boolean append)

    try {   //this is for monitoring runtime Exception within the block 
    
            String content = "This is the content to write into file"; //content to write into the file
    
            File file = new  File("C:/Users/Geroge/SkyDrive/Documents/inputFile.txt"); //here file not created here
    
            //if file doesnt exists, then create it
            if (!file.exists()) {   //checks whether the file is Exist or not
                file.createNewFile();   //here if file not exist new file created 
            }
    
            FileWriter fw = new FileWriter(file.getAbsoluteFile(), true); //creating fileWriter object with the file
            BufferedWriter bw = new BufferedWriter(fw); //creating bufferWriter which is used to write the content into the file
            bw.write(content); //write method is used to write the given content into the file
            bw.close(); //Closes the stream, flushing it first. Once the stream has been closed, further write() or flush() invocations will cause an IOException to be thrown. Closing a previously closed stream has no effect. 
    
            System.out.println("Done");
    
        } catch (IOException e) { //if any exception occurs it will catch
            e.printStackTrace();
        }
    • Gracias por los comentarios! Ahora el panorama es más claro! 🙂
    • véase la respuesta actualizada para añadir el contenido de un archivo sin borrar el contenido anterior. FileWriter tener anexar la opción de archivo. El valor predeterminado del atributo es false.
  5. 4

    Su código es el más simple. Pero, yo siempre trato de optimizar el código más. Aquí se muestra un ejemplo.

    try (BufferedWriter bw = new BufferedWriter(new FileWriter(new File("./output/output.txt")))) {
        bw.write("Hello, This is a test message");
        bw.close();
        }catch (FileNotFoundException ex) {
        System.out.println(ex.toString());
        }
    • No creo que su FileWriter será cerrado si lo haces de esa manera. No se si es importante, aunque.
  6. 4

    Archivos.write() es la solución simple como @Dilip Kumar, dijo. He usado de esa manera hasta que me enfrenté a un problema, no puede afectar separador de línea (Unix/Windows) CR LF.

    Así que ahora puedo usar Java 8 secuencia de escritura de un fichero de forma, lo que me permite manipular el contenido sobre la marcha. 🙂

    List<String> lines = Arrays.asList(new String[] { "line1", "line2" });
    
    Path path = Paths.get(fullFileName);
    try (BufferedWriter writer = Files.newBufferedWriter(path)) {   
        writer.write(lines.stream()
                          .reduce((sum,currLine) ->  sum + "\n"  + currLine)
                          .get());
    }     

    De esta manera, puedo especificar el separador de línea o que puedo hacer cualquier tipo de magia como adorno, en Mayúsculas, filtrado, etc.

  7. 3
    String content = "your content here";
    Path path = Paths.get("/data/output.txt");
    if(!Files.exists(path)){
        Files.createFile(path);
    }
    BufferedWriter writer = Files.newBufferedWriter(path);
    writer.write(content);
    • Bienvenido a ASÍ. Por favor, que no sólo el código de respuestas puede ser eliminado debido a la baja calidad de las fotos. Consulte stackoverflow.com/help/how-to-answer
    • Además, por favor, no copiar las respuestas existentes.
  8. -2
    File file = new File("path/file.name");
    IOUtils.write("content", new FileOutputStream(file));

    IOUtils también puede ser utilizado para escribir/leer archivos fácilmente con java 8.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea