2010-01-24 25 views
7

Estoy trabajando en una tarea para la escuela, y estoy intentando algo más para obtener crédito adicional. El programa es para demostrar las diferencias de eficiencia entre una búsqueda binaria & lineal para un tamaño de matriz dado de enteros. Tengo una configuración de bucle que crea una matriz int [size], busca un número aleatorio y luego crea una nueva matriz de int [tamaño * 2].Cómo borrar el texto existente en un archivo

Los resultados se escriben en un archivo de texto. La salida escribe bien, pero después de compilar & ejecutando el programa varias veces, el archivo de salida tiene muchas secciones de datos. no

File output= new File("c:\\BigOhResults.txt"); 
int counter=2; 

if (output.canWrite() && output.exists()) { 
    BufferedWriter out= new BufferedWriter(new FileWriter(output, true)); 
    out.write(type+" \n\n"); //writes the search type 
    out.write(type+"Search Results\n\n"); 

    while (counter <= data.size()) { 
     out.write(data.get(counter-1)+" millisecond runtime " + 
     "for a "+ data.get(counter-2)+" random number " +"sample size\n"); 
     counter=counter+2; 
    } 
} 

Hay alguna manera de que pueda borrar el texto dentro de ese archivo de salida sobre cada vez que el programa se ejecute:

Este es mi código que está anidado dentro de un bloque try/catch?

la razón por la que estoy haciendo esto es que el profesor requiere el resultado impreso con los datos graficados. Ya completé el requisito de gráficos y funciona bien. Solo quiero que la impresión del archivo coincida con la impresión del gráfico.

Respuesta

3

Como ya se mencionó, el constructor [FileWriter] [1] le permite especificar borrar el texto existente y comenzar al principio del archivo. Algunas otras observaciones sobre el código:

  • La comprobación en output.exists() es redundante después de una llamada a output.canWrite() y no es necesaria. output.canWrite() comprobará si el archivo existe y que puede escribir en él.
  • No olvide cerrar el objeto BufferedWriter.

así:

if (output.canWrite()) { 
    BufferedWriter out = null; 
    try { 
     out = new BufferedWriter(new FileWriter(output, false)); 
     out.write(type+" \n\n"); //writes the search type 
     out.write(type+"Search Results\n\n"); 

     while (counter <= data.size()) { 
      out.write(data.get(counter-1)+" millisecond runtime " + 
       "for a "+ data.get(counter-2)+" random number " +"sample size\n"); 
      counter=counter+2; 
     } 
    } catch (IOException e) { 
     // Do what you want here, print a message or something 
    } finally { 
     if(out != null) { 
      try { 
       out.close(); 
      } catch (IOException e) { 
       // Again, do what you want here 
      } 
     } 
    } 

} 

[1]: http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileWriter.html#FileWriter(java.io.File, boolean)

+0

Gracias por la ayuda. Cuando cambié el valor booleano a falso, todo funcionó bien. En cuanto a canWrite() & exists(), no había pensado en eso, ya que usé ese condicional del ejemplo del escritor de archivos de mi profesor, aunque él utilizó PrintStream y un método de ayuda para hacer lo mismo. Gracias por mencionarlo. – Jason

5

El segundo argumento para el constructor FileWriter, que está pasando en "verdadero", es "agregar". Es decir. porque lo ha configurado como verdadero, agregará su nueva salida al final del archivo. Si pasa en falso en su lugar, borrará los datos que ya están allí y los escribirá nuevos.

4

Lea la documentación para FileWriter. Usted hace no desea agregar.

0

Bueno por lo que he intentado algo y funcionó. Esto es cuando tiene un archivo que está destinado a anexar cualquier texto nuevo, pero desea restablecer/borrar el contenido del archivo al comienzo de la ejecución del programa. Espero que tenga sentido.

PrintWriter pw1 = new PrintWriter(new BufferedWriter(new FileWriter("newfile.txt"))); 
    pw1.close(); // Make sure the first PrintWriter object name is different from the second one. 

    PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("newfile.txt", true))); // PrintWriter in append-mode. When you recreate the text file with the same name, the file contents are erased because the previous object was not in append mode. 
    pw.close(); 
Cuestiones relacionadas