2016-05-04 2 views
0

У меня есть следующее основное заявление. Буферизованный писатель генерирует новый .txt-файл, но ничего не пишет. Любая идея почему? может ли это иметь отношение к правильному закрытию сканера? Я не так хорошо знаком с буферизованным писателем, но после некоторых исследований думаю, что я правильно его называю. Какие-либо предложения?Буферизованный писатель, не записывающий в файл

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

Вы пробовали промывать и закрывать BufferedWriter? – Aakash

+0

Ваш код отключается в конце. – shmosel

ответ

2

Почти каждый раз, когда я видел, кто-то жалуется BufferedWriter или PrintWriter не писать, это всегда из-за не топить.

Важное правило: Всегда bw.close() Потоки ввода/вывода.

bw.close();

Других вещей, которые вы можете рассмотреть в зависимости от потребности:

  1. (не рекомендуется) Включить AutoFlush при создании BufferedReader: Это будет полезно в таких случаях, как при записи в гнезда и вы ожидаете реальные времени. Не всегда полезно при записи в файлы. bw = new BufferedWriter (fileWriter, true/* autoflush * /);
  2. bw.flush(); всякий раз, когда вы считаете, что на самом деле писать на диск.
+0

Спасибо @JackDaniels. Это указывало мне в правильном правильном направлении. – cfsprod

Смежные вопросы