2013-05-16 92 views
0

我已經準備好了我的方法,但它並沒有像我們的文本文件那樣將重複項寫入文本文件,而是將其打印到屏幕上而不是文件中?如何寫入文本文件

// Open the file. 
File file = new File("file.txt"); 
Scanner inputFile = new Scanner(file); 
//create a new array set Integer list 
Set<Integer> set = new TreeSet<Integer>(); 
//add the numbers to the list 
while (inputFile.hasNextInt()) { 
    set.add(inputFile.nextInt()); 
} 
// transform the Set list in to an array 
Integer[] numbersInteger = set.toArray(new Integer[set.size()]); 
//loop that print out the array 
for(int i = 0; i<numbersInteger.length;i++) { 
     System.out.println(numbersInteger[i]); 
} 
for (int myDuplicates : set) { 
    System.out.print(myDuplicates+","); 
    BufferedWriter duplicates = new BufferedWriter(new FileWriter("sorted.txt")); 
    try { 
      duplicates.write(myDuplicates + System.getProperty("line.separator")); 
     } catch (IOException e) { 
      System.out.print(e); 
      duplicates.close(); 
     } 
    //close the input stream 
     inputFile.close(); 
    } 
} 

這一部分是一個即時通訊談論

for (int myDuplicates : set) { 
     System.out.print(myDuplicates+","); 
     BufferedWriter duplicates = new BufferedWriter(new FileWriter("sorted.txt")); 
     try { 
      duplicates.write(myDuplicates + System.getProperty("line.separator")); 
     } catch (IOException e) { 
      System.out.print(e); 
      duplicates.close(); 
     } 
     //close the input stream 
     inputFile.close(); 
     } 
} 

回答

2

你只是調用duplicates.close()如果有一個IOException。如果你沒有關閉作者,你不會將任何緩衝的數據清空。您應該關閉finally區塊中的作者,以便關閉它,無論是否有例外。

但是,您應該打開和關閉文件以外的循環。你希望文件在循環中打開。您可能想要:

BufferedWriter duplicates = new BufferedWriter(new FileWriter("sorted.txt")); 
try { 
    // Loop in here, writing to duplicates 
} catch(IOException e) { 
    // Exception handling 
} finally { 
    try { 
     duplicates.close(); 
    } catch (IOException e) { 
     // Whatever you want 
    } 
} 

如果您使用Java 7,則可以使用try-with-resources語句更簡單地完成此操作。

(另外,由於某種原因,你在循環中調用inputFile.close(),英里後,你已經實際完成從中讀取。同樣,這應該是在finally塊,當你不再需要inputFile

+0

現在它只向文件中寫入1個數字 –

+0

@WagnerMaximiliano:您應該在循環外打開並關閉它。將編輯的答案說清楚。 –

+0

我其實非常感謝 –