2012-03-07 3 views
0

정수가 들어있는 문자열을 가진 txt 파일이 있습니다. ArrayList를 사용하여 일부 컨테이너에 복사하고 정렬하고 다른 파일에 씁니다. 작동하지 그러나파일 내부 정렬

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

+1

나는 또한 어떤 종류의 코드도 호출하지 않으므로 이전과 같은 순서를 취한다고 가정한다. 그렇지 않습니까? – Thomas

+0

입력 파일의 내용을 읽고 파싱했는지 확인 했습니까? – Alex

답변

3

ArrayList을 정렬하려는 시도가없고 ArrayList의 순서는 요소가 추가 된 순서입니다.

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

오름차순으로는 적합하지 않은 경우 순서를 정의하는 Comparator을 받아 Collections.sort()의 다른 버전이 있습니다 :

ArrayList 사용 java.util.Collections.sort()를 정렬합니다.

+0

그것은 결코 작동하지 않습니다 : 문제는 새로운 파일이 항상 비어 있고 아무것도 그 안에 쓰여 있지 않습니다, 그것이 문제입니다. – BObov

+0

'arr.size()'를 확인 (어딘가에서 인쇄)하여 뭔가 읽었고'arr'이 채워지는 것을 확인할 수 있습니까? – hmjd

+0

getRealPath()에 대한 [documentation] (http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletContext.html#getRealPath (java.lang.String))은 후행 슬래시가 반환 된 문자열에 추가되는 경우 이것이 사실인지 아닌지는 알 수 없습니다. 사용중인 파일의 경로를 확인할 수 있습니까? – hmjd