我必须在另一个名为“file_2.txt”的文件中对名为“file_1.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)
您正在为第一个文件的每一行打开一个文件。你不想这样做......
以下是您应该做的事情的概述。
1)将一个文件中的所有数字加载到List中。
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)将列表写入新文件
try (PrintWriter pw = new PrintWriter(new File("D:\\file_2.txt"))) {
for (int x : numbers) {
pw.println(x);
}
}
答案 1 :(得分:0)
您可以将文件读入HashSet
,该文件将自动维护整数排序,然后将其写入另一个文件。
// 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);
}
}