Manejo de archivos en java: escribir en un archivo de texto (.txt)

En esta ocasión aprenderemos como utilizar java para escribir en un archivo de texto con extensión .txt.

Realmente no es necesario utilizar esta extensión, se pueden utilizar otras extensiones.

Para proceder comenzaremos primero con un video que he realizado yo mismo, o pueden continuar y ver el codigo ejemplo donde lo explicaré mas detalladamente:

Video tutorial de escritura de archivos en java.

Codigo ejemplo:

En el siguiente codigo tenemos lo siguiente:
Un método en Java cuya función es escribir un nuevo archivo 1 simple linea de texto. EL método consta de un parametro que es el nombre del archivo, por ejemplo “archivo.txt”. Debe estar incluida la extensión en el nombre, pues no se asigna por defecto.

Veamos el código:

 

import java.io.*;//no olviden importar esta librería al inicio de su programa
//esto es solo un método, no una clase, el método deberá ser incluido en una clase java para su uso
public void escribir(String nombreArchivo)
	{
		File f;
		f = new File("nombreArchivo");

		//Escritura
		try{
		FileWriter w = new FileWriter(f);
		BufferedWriter bw = new BufferedWriter(w);
		PrintWriter wr = new PrintWriter(bw);	
		wr.write("Esta es una linea de codigo");//escribimos en el archivo 
		wr.append(" - y aqui continua"); //concatenamos en el archivo sin borrar lo existente
                //ahora cerramos los flujos de canales de datos, al cerrarlos el archivo quedará guardado con información escrita
                //de no hacerlo no se escribirá nada en el archivo
		wr.close();
		bw.close();
		}catch(IOException e){};
         }

Como se puede apreciar, es necesario incluir el código dentro de un “try” y un “catch” para evitar errores.

Será necesario el uso de 4 clases especiales para poder escribir, la clase File, FileWriter, BufferedWriter y PrintWriter, cada una hace lo siguiente:

  1. File: esta clase es la escencia de crear un nuevo archivo, si un archivo con el mismo nombre ya existe podríamos sin querer escribir contenido sobre el mismo.
  2. FileWriter: es un objeto que tiene como función escribir datos en un archivo.
  3. BufferedWriter: objeto que reserva un espacio en memoria donde se guarda la información antes de ser escrita en un archivo.
  4. PrintWriter: Es el objeto que utilizamos para escribir directamente sobre el archivo de texto.

Espero que este corto tutorial te haya sido de utilidad, recuerda dejar tus comentarios.

 

Acerca del autor:

Mi nombre es Jorge Villalobos, soy Colombiano de nacimiento y resido en México desde 2005,actualmente soy el creador de codigoprogramacion.com Soy ingeniero en tecnologías de información y comunicaciones y trabajo de tiempo completo desarrollando aplicaciones web. En general me considero un tipo normal, me gusta salir, divertirme, y uno de mis hobbies es programar y hacer tutoriales para compartir conocimiento, me gusta la pizza, el ajedrez y tomar una que otra cerveza los fines de semana. Espero que este proyecto ayude a ayudar a los demás.

Twitter del autor:

41 comments

  1. Jhon Jaider says:

    Hola amigos….
    Quiero preguntar si hay alguna manera de escribir texto en cualquiera linea de una .txt en lenguaje java??…
    Si hay alguna forma estaré muy agradecido con ustedes.

  2. a says:

    File Archivo = new File(System.getProperty(“user.dir”));

    String Path = Archivo.getAbsolutePath() + “\\ListaPrecios.txt”;

    File ArchivoDesc = new File(Path);
    FileReader Reader = new FileReader(ArchivoDesc);
    BufferedReader brReader = new BufferedReader(frReader);

    Scanner Scanner = new Scanner(ArchivoDesc);

    long CantLineas = 0;
    String[] VecLineas;
    String Linea;
    String Codigo;

    CantLineas = brReader.lines().count();

    if(CantLineas == 0)
    {
    Error = “El archivo no tiene precios”;
    return false;
    }

    while (Scanner.hasNextLine()) {

    Linea = Scanner.nextLine();
    VecLineas = Linea.split(“:”);

    Codigo = VecLineas[0];

    if(Integer.parseInt(Codigo) == intCodigo)
    {
    Precio = Double.parseDouble(VecLineas[1]);
    break;
    }

    }
    brReader.close();
    ArchivoDesc = null;
    Archivo = null;
    frReader = null;
    brReader = null;
    return true;

    } catch (Exception e) {
    throw e;
    }

    • Jhon Jaider says:

      Hola amigos….
      Quiero preguntar si hay alguna manera de escribir texto en cualquiera linea de una .txt en lenguaje java??…
      Si hay alguna forma estaré muy agradecido con ustedes.

  3. a says:

    try {
    File Archivo=new File(“Hitorial.txt”) ;

    FileWriter FW= new FileWriter(Archivo,true);
    PrintWriter PW= new PrintWriter(FW);

    PW.println(Linea);

    PW.close();
    PW.close();

    } catch (Exception e) {
    JOptionPane.showMessageDialog(null, “El archivo no existe para guardar”);
    }

  4. jose says:

    Ayuda,la pagina del codigo fuente se cayo y el codigo que sale escrito no esta completo

  5. joel says:

    y si por ejemplo quiero que me guarde el archivo en una carpeta en especifico , esque me lo guarda en mi carpeta donde tengo mi proyecto netbeans

  6. arom says:

    como para crear una java

  7. Alfreod says:

    Bro!!
    Muchisimas gracias solo tengo un problemita a la hora de escribir en el archivo le agregue un retorno de carro \r, por que me ponía todo junto solo con el \n solo, pero ahora me deja demaciados espacios entre cada linea no se a que se deba, ojala y me puedas echar una mano te lo agradecería, de antemanos muchas gracias y ten un excelente día.

    Saludos.

  8. Piscis says:

    Necesito un apoyo, tengo un codigo donde quiero crear un archivo .txt pero no lo crea, me podrian apoyar de favo.

    El codigo es el siguiente

  9. esme says:

    quisiera saber como podria tomar un registro de un archivo y mandarlo a otro archivo vasandome en la direccion del registro

  10. cindy says:

    quisiera que mi archivo.txt no se reemplace por otro q guardo quisiera q me colaboraran para que tenga su fecha y no se reemplace

    String nomarchivoAgro=”/visitas/visitaAgronomia.txt”;

    try {

    File tarjeta = Environment.getExternalStorageDirectory();
    File file = new File(tarjeta.getAbsolutePath(), nomarchivoAgro);
    OutputStreamWriter osw = new OutputStreamWriter(
    new FileOutputStream(file));
    // Escribimos el String en el archivo
    osw.write(“——————————-“);
    osw.flush();
    osw.close();

    Toast.makeText(getApplicationContext(), “Los datos fueron grabados correctamente”, Toast.LENGTH_SHORT).show();
    } catch (IOException ioe) {
    Toast.makeText(getApplicationContext(), “Los datos NO fueron grabados correctamente”,
    Toast.LENGTH_SHORT).show();

    }
    }

  11. osbaldo says:

    Oye esta buena tu aportacion me atudarias con el codigo de hacer un programa que pueda leer las lienas que hay en el y pasarlas a un nuevo archivo .txt

  12. batman says:

    aver si para la otra lo explicas mas a fondo tus codigos y por parte SALUDOS, soy GDB bweto

    • orlando Ramos says:

      Hola
      creo que pides las cosas de una manera muy despectiva, si quieres aprender algo a fondo te recomiendo que compres un libro y te pongas a leer.
      las personas hacen sus aporte con la mejor intención como par que gente como tu venga solo a criticar.

      • Alfonso says:

        Hola, me podrias decir porfavor, como puedo hacer que las palabras que tengo en un txt se reemplazen por otras porfavor.

  13. Denisse says:

    hola! deberias de hacer un ejemplo de como hiciste tu syntaxHighlighter

  14. Jorwin says:

    y la lectura? como hago la lectura?

  15. Ivette says:

    Hola…. creo que en la linea 02 debería ser f = new File(nombreArchivo);
    sin comillas para que tome el valor del parámetro, de lo contrario se llama siempre nombreArchivo, no importa lo que le mandemos en e parametro… Saludos

  16. Leonardo says:

    buen tutorial, espero que sigas difundiendo el conocimiento

  17. me gustan tu tutoriales, me gustaria un tutorial que uno pueda imprimir un informe por un programa androdi con java

  18. me gustan tu tutoriales, ustaria uno donde puede imprimir un informe por androdi con java

  19. Leon16 says:

    Por favor me podrias ayudar con esto? me URGE! Gracias!!!

    El usuario ingresa los valores en los 3 campos obligatorios (autor, titulo y letra) y presiona Guardar.
    la aplicación debe abrir un archivo formando el nombre con el autor y título de la siguiente forma: Autor_Título.txt Puede utilizar guión bajo (_) o algún otro caracter que posiblemente no vaya a utilizarse en los valores de los campos Autor y Título.
    A continuación, la aplicación debe escribir el contenido del campo Letra en el archivo y cerrarlo.

    • Elí Gamaliel says:

      hazlo asi dentro del:
      File archivo = new PrintWriter(“Nombre.txt”);
      try{
      PrintWriter Pw = new PrintWriter(
      new FileWriter(archivo, true));
      Pw.Println(Autor+”_”+titulo);
      Pw.close();
      JOptionp…..(“Registro grabado”);
      }catch (IOException ex){
      JOptiop….(“error!!”);

  20. james says:

    Amigo ayúdame con un programa , tiene que leer un archivo .txt en dos columnas de datos los cuales usas para graficar unos puntos y hacer operaciones y finalmente dibujar una linea de promedio

  21. Hugh says:

    Hola disculpa he seguido los pasos que me has indicado pero no encuentro en donde me crea el archivo…

    • hussein says:

      import java.io.*;
      public class Archivo{
      public static void main(String []args){
      File f = new File(“miArchivo.txt”);
      try{
      PrintWriter wr = new PrintWriter(new BufferedWriter(new FileWriter(f)));
      wr.write(“Esta es una linea de codigo”);
      wr.append(” – y aqui continua”);
      wr.close();
      }catch(IOException e){
      System.out.println(“Error con archivo”);
      }
      }
      }

  22. Leonardo Yepez says:

    Primero que nada deseo agradecer a Jorge por tomarse algo de tiempo para compartir conocimientos.
    Muy útil el post, luego deseo me disculpen si toco algunas fibras sensibles, pero No le veo sentido a pedir nada URGENTE si no desean leer un poco. Helen, creo que Jorge dijo claramente que es solo un método para que implementes en alguna Clase, si no entiendes esa frase, hace falta repasar un poco. Edgar David, creo que el método append() de la clase PrintWriter que aparece en el código resolvería tu problema, para que no borres lo anterior, debes usar write() solo la primeta vez que accedes al archivo.

  23. edgar david says:

    como que codigo debo utilizar para que la informacion que tengo guardada en un txt no se borre al introducir mas informacion en el txt pero usando interfaces graficas ese es el detalle que tengo todo el codigo lo tengo en un boton del interfaz

  24. edgar david says:

    estoy desarrollando una aplicacion y almaceno informacion en un txt como le puedo hacer para a la hora de guardar mas informacion no me borre la anterior poque me la remplaza…..ME URGE..

  25. Helen Ortiz says:

    HOLA AMIGO !!!
    ME PODRIAS PASAR EL CODIGO COMPLETO POR FAVOR PORQUE EN EL VIDEO NO SE DEJA VER POR COMPLETO… Y LO NECESITO DE MANERA URGENTE

  26. Juan Lobos says:

    Gracias compadre,saludos de Chile

  27. Alex says:

    Hermano te felicito eres una persona de pensamiento diferente! tomaré tu ejemplo para ayudar a los demas.
    Gracias por tu dedicación.

    Saludos

    att.
    Alex Moncada
    Desde Honduras

  28. carlos Madara says:

    Muy Buen tutorial, bien explicado y fácil, me fue de gran utilidad, y lo emplee para que me creara un archivo con datos de la Base y con una pagina JSP, mostre los registros simplemente separándolos con un símbolo.

    Muchas gracias

  29. uriel says:

    como hacer una estructura en un archivo con java e implementar borrar campo,modificar campo,tamaño del campo.

  30. como puedo realizar este programa?????? necesito AYUDA
    diseñar un programa que solicite desde el teclado el nombre del archivo de texto cuyo contenido debera procesar de la siguiente manera:crear un archivo de texto con todas las vocales que contenga y crear un archivo de texto con todas las consonantes que contenga. exhibir los archivos resultantes

  31. como puedo realizar este programa????? necesito ayuda
    diseñar un programa que solicite desde el teclado el nombre del archivo de texto cuyo contenido debera procesar de la siguiente manera:crear un archivo de texto con todas las vocales que contenga y crear un archivo de texto con todas las consonantes que contenga. exhibir los archivos resultantes

  32. calixto parral says:

    buenas noches amigo disculpa las molestias pero como puedo crear un programa en java creando un archivo de texto,despues crear un archivo de texto que muestre todas las vocales que contenga el archivo,y un segundo archivo de texto con todas las consonantes que contenga el archivo..y todo se tiene que hacer en entrada desde el teclado. me urge porfavor. gracias

  33. cristian says:

    Buenas. mira estoy desarrollando una aplicacion HTA, puesto que se me piden dos cosas importantes, que si tengo un mapa y le dy click a una zona de ese mapa debe guardarme en un .txt el nombre del mapa al que le di click y si escribo en un cuadro de texto tambien debe guardarmelo en el .txt, todo esto de manera continua ya que debo al final guardar la informacion en el .txt para poder procesarla luego.. yo no soy programador pero si me gustaria saber si esto se puede hacer en HTML y Java en conjunto gracias

  34. Fernando says:

    saludos

    contactame para una consulta sobre como hacer un libro digital…

    fernando Pulgarin
    cali

Leave a Reply to Elí Gamaliel Cancel reply

Your email address will not be published. Required fields are marked *