2012-03-07 76 views
0

我有一個包含整數的字符串的txt文件。 我想將它複製到某個容器(我嘗試使用ArrayList),對它進行排序並寫入另一個文件。排序文件

這裏是我做了什麼(這個代碼是我的servlet的一部分):

String path = session.getServletContext().getRealPath("/") 
        + "numbers.txt"; 
      String path2 = session.getServletContext().getRealPath("/") 
        + "numbers2.txt"; 

      ArrayList<Integer> arr = new ArrayList<Integer>(); 
      FileReader filereader = new FileReader(path); 
      BufferedReader br = new BufferedReader(filereader); 
      String eachLine = br.readLine(); 
      while (eachLine != null) { 
      arr.add(Integer.parseInt(eachLine)); 
      eachLine = br.readLine(); 
      } 
      filereader.close(); 

      FileWriter writer = new FileWriter(path2, true); 
      for (int i = 0; i < arr.size(); ++i) 
       writer.write(arr.get(i) + "-"); 
      writer.flush(); 
      writer.close(); 

但是它永遠不會奏效:問題是,新的文件始終是空的,沒有什麼是它裏面寫的,這就是問題所在。

+0

請定義「它從來沒有工作」。你得到什麼而不是一個排序文件? – Thomas 2012-03-07 12:03:19

+1

我也看不到你打電話給任何排序代碼,因此我認爲你得到的訂單和以前一樣,是嗎? – Thomas 2012-03-07 12:04:47

+0

您確認輸入文件的內容已被正確讀取和解析嗎? – Alex 2012-03-07 13:50:45

回答

3

沒有嘗試對ArrayList進行排序,並且ArrayList的順序將是添加元素的順序。

要排序ArrayList使用java.util.Collections.sort()

Collections.sort(arr); // Ascending order. 

有一個接受Comparator定義訂單,如果按升序排列是不適合的Collections.sort()另一個版本。

+0

它永遠不會工作:問題是新文件總是空的,它裏面沒有寫任何東西,這就是問題所在。 – BObov 2012-03-07 13:13:35

+0

你可以檢查(打印某處)'arr.size()'以確保讀取了某些內容並且填充了'arr'? – hmjd 2012-03-07 13:55:38

+0

'getRealPath()'的[documentation](http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletContext.html#getRealPath(java.lang.String))不指示如果在返回的字符串後附加了斜線,並且我不知道是否是這種情況。你能檢查正在使用的文件的路徑嗎? – hmjd 2012-03-07 14:05:37