2016-05-04 9 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. BufferedReaderの作成時に自動フラッシュを有効にします(一般的にはお勧めしません): それはソケットに書き込むときのような場合に有用であろうが、あなたは本当の期待リアルタイムコミュニケーション。ファイルに書き込むときには一般的には役に立ちません。 bw =新しいBufferedWriter(fileWriter、true/* autoflush * /);
  2. bw.flush();実際にディスクに書き込むことが適切だと思われるときはいつでも。
+0

ありがとう@ジャックダニエルズ。これは正確な正しい方向に私を指摘した。 – cfsprod

関連する問題