2016-05-04 5 views
0

Ich habe die folgende Hauptaussage. Der gepufferte Writer generiert eine neue TXT-Datei, schreibt aber nichts. Irgendeine Idee warum? könnte das damit zu tun haben, dass der scanner nicht richtig geschlossen wird? Ich bin mit dem gepufferten Schreiber nicht so vertraut, aber nach einigem Nachdenken denke ich, dass ich es richtig nenne. Irgendwelche Vorschläge?Buffered Writer nicht in Datei schreiben

public class Lab4Main 
{ 
static QuickSort QuickMethod = new QuickSort(); 
static HeapSort HeapMethod = new HeapSort(); 
static MedianOfThree MedianMethod = new MedianOfThree(); 

public static void main(String[] args) throws IOException { 
    BufferedWriter bw = null; 
    int arraySize = 0; 
    int len = 0; 

    Scanner input = new Scanner(System.in); 
    System.out.print("Enter the size of the file to sort: "); 
    arraySize = input.nextInt(); 
    System.out.println("Application has been set up with size: " + arraySize +"\n"); 

    //initializes what user just entered in 
    int Array[] = new int[arraySize]; 
    len = arraySize; 


    try{ 
     Scanner input2 = new Scanner(System.in); 
     //ask for file path from user 
     System.out.print("Please enter the file name with extension: " + "\n"); 
     File file = new File(input2.nextLine()); 

     input2 = new Scanner(file); 

     for (int i = 0 ; input2.hasNext();i++) 
     { 
     // System.out.println(input); 
      int number = input2.nextInt(); 
      Array[i] = number; 
     }input2.close(); 

    } catch(Exception ex2) { 
    System.out.println(
      "Error reading file path"); 
    System.exit(0); 
    } 

    //make copies of array to sort 
    int quickArray [] = new int[arraySize]; 
    int heapArray [] = new int[arraySize]; 
    int medianOfThreeArray [] = new int[arraySize]; 
    System.arraycopy(Array, 0, quickArray, 0, Array.length); 
    System.arraycopy(Array, 0, heapArray, 0, Array.length); 
    System.arraycopy(Array, 0, medianOfThreeArray, 0, Array.length); 

    // The name of the file to open. 
    String fileName = "/_trial2.txt"; 

    // Assume default encoding. 
    FileWriter fileWriter = new FileWriter(fileName); 

    // Always wrap FileWriter in BufferedWriter. 
    bw = new BufferedWriter(fileWriter); 

    try{ 


    bw.write("\nUnsorted Quick: "); 
    System.out.println("\nUnsorted Quick: "); 
    for (int i = 0; i < arraySize; i++){ 
    System.out.print(quickArray[i] + ", "); 
    //bufferedWriter.write(quickArray[i] + ", "); 
    } 
+2

Haben Sie versucht, den BufferedWriter zu spülen und zu schließen? – Aakash

+0

Ihr Code schneidet am Ende ab. – shmosel

Antwort

2

Fast jedes Mal, dass ich jemanden über BufferedWriter oder Printwriter gesehen beklagen nicht zu schreiben, ist es immer wegen nicht Spülung.

Wichtiger Regel: Immer bw.close() Eingang/Ausgang Ströme.

bw.close();

Andere Dinge, die Sie können je nach Bedarf:

  1. (Im Allgemeinen nicht empfohlen) Autoflushing aktivieren, wenn BufferedReader erstellen: Es wird in solchen Fällen sinnvoll sein, wenn sie an Steckdosen zu schreiben und Sie erwarten, eine echte Zeit Kommunikation. Im Allgemeinen nicht nützlich beim Schreiben in Dateien. bw = neuer BufferedWriter (fileWriter, true/* autoflush * /);
  2. bw.flush(); wann immer Sie denken, dass es angemessen ist, tatsächlich auf die Festplatte zu schreiben.
+0

Danke @JackDaniels. Das hat mich in die richtige Richtung gelenkt. – cfsprod