2012-03-07 121 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