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

Duda_Borrar_Linea_Fichero

Estas en el tema de Duda_Borrar_Linea_Fichero en el foro de Java en Foros del Web. hola chicos/as Tengo este código, para buscar una palabra en un texto y imprimir sólo la linea, del texto, alguien sabe como hacer que haga ...
  #1 (permalink)  
Antiguo 13/01/2013, 11:14
Enjavado
Invitado
 
Mensajes: n/a
Puntos:
Duda_Borrar_Linea_Fichero

hola chicos/as

Tengo este código, para buscar una palabra en un texto y imprimir sólo la linea, del texto, alguien sabe como hacer que haga lo mimo pero elimine la linea del archivo de texto

Les dejo código:

Código:
package probando_cosas;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
 
public class LeeFiecheross{  
public static void main(String[] args) {
	 java.util.Scanner scanner = new Scanner(System.in);
	 System.out.println("Introduce una cadena de texto a buscar: ");
	 String request = scanner.next();
        
	 	try {
			final BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\M.C.H.R. System\\Documents\\NetBeansProjects\\Probando_cosas\\src\\probando_cosas\\datos.dat"));
			String line = "";
			while((line = reader.readLine())!= null){
				if(line.indexOf(request)!= -1){	
                                    System.out.println(""+line);
				}
                                
			}reader.close();
	 	} catch (FileNotFoundException e) {e.printStackTrace();
		} catch (IOException           e) {e.printStackTrace();
		}
}

    
}
bueno si con este mismo código, se puede en vez de imprimir la linea, pues me la borra del archivo se los agradecere.

Un saludo
  #2 (permalink)  
Antiguo 13/01/2013, 11:46
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 5 meses
Puntos: 8
Respuesta: Duda_Borrar_Linea_Fichero

Mira, para poder eliminar la linea debes de tener un archivo auxiliar y, lo que vas leyendo de un fichero lo vas pasando al auxiliar, cuando se termine de leer del fichero origen, se vuelca el auxiliar al origen con las modificaciones ya realizadas.

Fuera de esto me llama la atención que utilices un archivo .dat para leer en el, puesto que si es un fichero de registros secuenciales te va a ser mas fácil y útil el leer y escribir con Scanner y Formatter respectivamente.
Por lo que tengo entendido los .dat serían buenas para archivos relativos directos.
  #3 (permalink)  
Antiguo 13/01/2013, 11:51
Enjavado
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda_Borrar_Linea_Fichero

Y tendrás algún ejemplo para hacer el volcado a otro archivo, los .dat nos lo dijeron en clase, que los hicieramos.

Un saludo
  #4 (permalink)  
Antiguo 13/01/2013, 11:55
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 5 meses
Puntos: 8
Respuesta: Duda_Borrar_Linea_Fichero

Te voy a pegar ejemplos que tengo de clase, pero utilizo totalmente diferente todo:

Código:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Ejercicio3;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Formatter;
import java.util.Scanner;

/**
 *
 * @author antonio
 */
public class EscribirArchivo {
    
    private String nombre;
    private Formatter outPedidos, outAux;
    private Scanner inputTeclado, inputPedidos, inputAuxi;
    private Pedidos p1, p2;
    private boolean continuar = true;
    private File pedidos, auxi;
    
    public EscribirArchivo(String nombre)
    {
        this.nombre = nombre;
    }
    
    public void añadirPedido() throws FileNotFoundException
    {
        p1 = new Pedidos();
        p2 = new Pedidos();
        outAux = new Formatter("AUXI.TXT");
        
        pedidos = new File("PEDIDOS.TXT");
        inputPedidos = new Scanner(pedidos);
        
        while(continuar)
       {
           System.out.println("Introduce los datos del pedido: código del cliente, precio del pedido y mes del pedido");
           inputTeclado = new Scanner(System.in);
           
           p1.setCliente(inputTeclado.nextLine());
            
   
            if(!p1.getCliente().isEmpty())
            {
                p1.setPrecio(inputTeclado.nextFloat());
                p1.setMes(inputTeclado.nextInt());
                
                outAux.format("%s \t %.2f \t %d\n", p1.getCliente(), p1.getPrecio(), p1.getMes());
                
                
                while(inputPedidos.hasNextLine())
                {
                    try
                    {
                    p2.setCliente(inputPedidos.next());
                    p2.setPrecio(inputPedidos.nextFloat());
                    p2.setMes(inputPedidos.nextInt());
                    
                    outAux.format("%s \t %.2f \t %d\n", p2.getCliente(), p2.getPrecio(), p2.getMes());
                    }catch(Exception e){}
                }
               
            }
            else
            {
                continuar = false;
            }
        }
       
      outAux.close();
      inputTeclado.close();
      inputPedidos.close();
      
       volcarArchivo();
    }
   
    public void volcarArchivo() throws FileNotFoundException
    {
        auxi = new File("AUXI.TXT");
        inputAuxi = new Scanner(auxi);
        outPedidos = new Formatter("PEDIDOS.TXT");
        p1 = new Pedidos();
        
        
        while(inputAuxi.hasNextLine())
        {
            String nl = inputAuxi.nextLine();
            Scanner sc1 = new Scanner(nl);
            
            p1.setCliente(sc1.next());
            p1.setPrecio(sc1.nextFloat());
            p1.setMes(sc1.nextInt());
        
            outPedidos.format("%s \t %.2f \t %d\n", p1.getCliente(), p1.getPrecio(), p1.getMes());
        }
        
        inputAuxi.close();
        outPedidos.close();
    }
    
}
  #5 (permalink)  
Antiguo 13/01/2013, 12:00
Enjavado
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda_Borrar_Linea_Fichero

Así no nos los piden, lo que nos dicen es en el mismo fichero, recorrerlo hasta encontrar la linea que tiene la palabra que has escogido y luego eliminarla, es una de las opciones que tg q hacer las demás las tengo

Mira este sería el programa
===================

1) Entrar datos en fichero (nombre, apellidos, etc)
2) listar todos los registros del archivo
3) buscar un registro e imprimir solo la linea que contiene el nombre deseado a buscar
4) lo mismo pero eliminar la linea (Aquí es donde esta mi duda kraneok )
5) Borrar fichero completo
6) Salir

Solamente la opción 4 es la que me falta

Un saludo
  #6 (permalink)  
Antiguo 13/01/2013, 12:11
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 5 meses
Puntos: 8
Respuesta: Duda_Borrar_Linea_Fichero

Para poder escribir en el debes cerrarlo, tal y como lo estás haciendo, así que ya pierdes la linea que es.
Puedes utilizar un contador que guarde la linea donde está la palabra ( si la encuentra ) y después utilizando una clase para escribir cuando llegues a dicha linea le escribes una cadena vacía, no sé si me explico.
  #7 (permalink)  
Antiguo 13/01/2013, 12:20
Enjavado
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda_Borrar_Linea_Fichero

Gracias kraneok, voy a mirar a ver si lo puedo terminar, oye por casualidad y perdona si te doy mucho el coñazo, cuando abro un fichero tengo que poner todo el path.

hay alguna manera de poner solo el archivo

Es porque si se abre desde otro ordenador, ejemplo profesora, no lo va a poder abrir, si tienes algún ejemplo de como se hace te lo agradecería.
  #8 (permalink)  
Antiguo 13/01/2013, 12:29
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 5 meses
Puntos: 8
Respuesta: Duda_Borrar_Linea_Fichero

Qué IDE utilizas?
  #9 (permalink)  
Antiguo 13/01/2013, 12:34
Enjavado
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda_Borrar_Linea_Fichero

Netbeans, es el que nos exigen kraneok.

Esque seguro que tiene que haber algo para saber todo el path de el fichero, para no meterlo todo
  #10 (permalink)  
Antiguo 13/01/2013, 12:47
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 5 meses
Puntos: 8
Respuesta: Duda_Borrar_Linea_Fichero

Con que pongas datos.dat ya debería funcionar, pruebalo.
  #11 (permalink)  
Antiguo 13/01/2013, 13:03
Enjavado
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda_Borrar_Linea_Fichero

Noo, lo he probado y no funciona
  #12 (permalink)  
Antiguo 13/01/2013, 13:13
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 5 meses
Puntos: 8
Respuesta: Duda_Borrar_Linea_Fichero

Ponlo en la raíz de la carpeta del proyecto.
  #13 (permalink)  
Antiguo 13/01/2013, 13:29
Enjavado
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda_Borrar_Linea_Fichero

Me das algun ejemplo, estoy destrozado ya del ordenador, llevo horas
  #14 (permalink)  
Antiguo 13/01/2013, 13:32
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 5 meses
Puntos: 8
Respuesta: Duda_Borrar_Linea_Fichero

En vez de ponerlo aquí

C:\\Users\\M.C.H.R. System\\Documents\\NetBeansProjects\\Probando_cosa s\\src\\probando_cosas\\datos.dat

Ponlo aquí
System\\Documents\\NetBeansProjects\\Probando_cosa s
  #15 (permalink)  
Antiguo 13/01/2013, 13:42
Enjavado
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda_Borrar_Linea_Fichero

Muchísimas gracias kraneok, te lo a agradezco en el alma, mil gracias campeón, ahora solo me queda lo de borrar solo una linea.

Un saludo
  #16 (permalink)  
Antiguo 13/01/2013, 13:44
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 5 meses
Puntos: 8
Respuesta: Duda_Borrar_Linea_Fichero

Bien, me alegro.
Un saludo!.

Etiquetas: netbeans, string
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




La zona horaria es GMT -6. Ahora son las 15:23.