Foros del Web » Programación para mayores de 30 ;) » Java »

Escribir en un .txt

Estas en el tema de Escribir en un .txt en el foro de Java en Foros del Web. Hola, tengo una clase que escribe en un txt. en la primera linea , que tengo que añadir para que escriba en un renglon especifico ...
  #1 (permalink)  
Antiguo 07/06/2011, 22:57
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 14 años
Puntos: 0
Pregunta Escribir en un .txt

Hola, tengo una clase que escribe en un txt. en la primera linea , que tengo que añadir para que escriba en un renglon especifico ?

Ejemplo si quiero inserta una frase en el renglon 6 que tengo que añadir para poder insertar en el renglon que yo quiera? .. bueno es todo muchas gracias de antemano por la colaboracion

Código:


import java.io.*;

public class EscribirFicheroTexto {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// Validamos si existe el fichero
		String sFichero = "fichero.txt";
		File fichero = new File(sFichero);

		if (fichero.exists())
  	          System.out.println("El fichero " + sFichero 
			+ " ya existe");
		else {
			try{
			  BufferedWriter bw = 
			    new BufferedWriter(new FileWriter(sFichero));
		
	
			 	bw.write("Fila numero ");
			 	

			  // Hay que cerrar el fichero
			  bw.close();
			} catch (IOException ioe){
				ioe.printStackTrace();
			}
		}

	}

}
  #2 (permalink)  
Antiguo 07/06/2011, 23:46
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Escribir en un .txt

Hola:

En un fichero de texto no puedes insertar líneas, unicamente "machacar" contenido o añadir al final. Piensa que un fichero no es más que una ristra de bytes en el disco duro e "insertar" quiere decir desplazar bytes para hacer un hueco y meter en el hueco lo que quieras.

Encima, un fichero de texto es más complejo, porque en general las líneas no tienen una longitud fija ni conocida, así que para saber dónde empezar a hacer ese hueco, no te queda más remedio que leer todo el fichero desde el principio contando líneas.

Lo más sencillo es que cargues el fichero en memoria si no es demasiado grande (en una List de String por ejemplo), de forma que cada item de la lista sea una línea, insertas en esa List y luego reescribes el fichero entero.

Si sólo quieres añadir al final del fichero, FileWriter tiene un constructor con dos parámetros, en el segundo se le pone un flag true para indicar que se quiere añadir respetando el contenido original.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 08/06/2011, 06:10
 
Fecha de Ingreso: mayo-2011
Mensajes: 79
Antigüedad: 13 años, 5 meses
Puntos: 14
Respuesta: Escribir en un .txt

Lo que indica Chui es correcto, si queires no depender de que el fichero en memoria pese demasiado puedes probar algo similar a esto (ficheros temporales):

Código:
 public void insertStringInFile
         (File inFile, int lineno, String lineToBeInserted) 
       throws Exception {
     // temp file
     File outFile = new File("$$$$$$$$.tmp");
     
     // input
     FileInputStream fis  = new FileInputStream(inFile);
     BufferedReader in = new BufferedReader
         (new InputStreamReader(fis));

     // output         
     FileOutputStream fos = new FileOutputStream(outFile);
     PrintWriter out = new PrintWriter(fos);

     String thisLine = "";
     int i =1;
     while ((thisLine = in.readLine()) != null) {
       if(i == lineno) out.println(lineToBeInserted);
       out.println(thisLine);
       i++;
       }
    out.flush();
    out.close();
    in.close();
    
    inFile.delete();
    outFile.renameTo(inFile);
    }
__________________
Web Admin:
http://www.coretec.es
Tutoriales, Noticias y Recursos Liferay y J2EE
  #4 (permalink)  
Antiguo 08/06/2011, 10:24
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 14 años
Puntos: 0
Respuesta: Escribir en un .txt

Gracias a los dos..otra duda, no habra una forma de saltar las lineas buscando encontre que el BufferedWriter tiene un metodo llamado newLine(): Pero no se como utilizarlos
Gracias.
  #5 (permalink)  
Antiguo 08/06/2011, 10:31
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 14 años
Puntos: 0
Respuesta: Escribir en un .txt

ya encontre la manera de escribir en en otas lineas con esto
Cita:
bw.write("Fila numero ");
bw.newLine();
bw.write("Fila numero ");
habra la manera de hacer un ciclo o un condicional oalgo asi..para escribir en la line especifica??...gracias

Etiquetas: txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:14.