2017-02-25 4 views
0

"file_1.txt"라는 파일의 모든 정수를 "file_2.txt"라는 다른 파일로 정렬해야하지만 컴파일 할 때 아무 것도 수행하지 않습니다.txt 파일의 정수를 다른 파일로 정렬

import java.io.*; 
import java.util.Scanner; 


public static void main(String[] args){ 

    try 
    { 
    Scanner fileScanner = new Scanner(new File("D:\\file_1.txt")); 
    while(fileScanner.hasNextLine()){ 
     Scanner lineScanner= new Scanner(fileScanner.nextLine()); 
     while (lineScanner.hasNext() && lineScanner.hasNextInt()) 
     { 
      try{ 
      FileWriter file=new FileWriter("D:\\file_2.txt"); 
      BufferedWriter writer=new BufferedWriter(file); 
      int s = lineScanner.nextInt(); 
      writer.write(s); 
      writer.newLine(); 
      writer.close(); 
      file.close(); 
      } 
      catch(FileNotFoundException e){ 
      e.printStackTrace(); 
      } 
      catch(IOException e){ 
      e.printStackTrace(); 
      } 

     }lineScanner.close(); 

    }fileScanner.close(); 
} 

    catch(FileNotFoundException e){ 
     e.printStackTrace(); 
    } 
} 
} 
+0

디버거를 사용하여 한 줄씩 코드를 단계별로 실행 해 보았습니까? –

+0

질문하는 것을 잊었습니다. – Mureinik

+0

나는 자바를 사용하여 파일을 읽는 방법, 자바를 사용하여 파일을 쓰는 법, 그리고 자바를 사용하여 정수를 정렬하는 방법을 제안한다. 말 그대로 수백 가지의 튜토리얼이 있습니다. – opensam

답변

0

당신은 첫 번째 파일의 모든 라인 위해 파일을 열고 있습니다. 당신은 그렇게하고 싶지 않습니다 ...

다음은 수행해야 할 작업에 대한 일반적인 개요입니다.

1) 한 파일의 모든 숫자를 목록으로로드하십시오.

List<Integer> numbers = new ArrayList<Integer>(); 
Scanner fileScanner = new Scanner(new File("D:\\file_1.txt")); 
while(fileScanner.hasNextLine()){ 
    numbers.add(Integer.parseInt(fileScanner.nextLine()); 
} 

2) 정렬 숫자

Collections.sort(numbers); 

3

) 자동으로 정수를 분류 유지 당신은 HashSet로 파일을 읽을 수

try (PrintWriter pw = new PrintWriter(new File("D:\\file_2.txt"))) { 
    for (int x : numbers) { 
     pw.println(x); 
    } 
} 
0

새로운 파일에 목록을 작성하고 그런 다음 다른 파일에 기록하십시오.

// Hashset maintains the sorted list 
Set<Integer> integers = new HashSet<Integer>(); 
Scanner fileScanner = new Scanner(new File("D:\\file_1.txt")); 
while(fileScanner.hasNextLine()) 
{ 
    integers.add(Integer.parseInt(fileScanner.nextLine()); 
} 

try (PrintWriter writer = new PrintWriter(new File("D:\\file_2.txt"))) 
{ 
    for (int integer : integers) 
    { 
     writer.println(integer); 
    } 
}