老师给了一道题,将IO.txt中的文本《出师表》每行打乱顺序,写到另一个文件IOIO.txt中,要求排好序。
我的思路是,先创建一个TreeSet集合,将IO.txt内容存进去,TreeSet会自动排好序,然后再输出到新的文件中去:
由于BufferedReader是包装流,不能直接用,所以要new一个FileReader流,这里我用一行代码写的:
BufferedReader br = new BufferedReader(new FileReader("D:\\IO.txt"));
再new一个FileWriter对象:
BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\IOIO.txt"));
建一个TreeSet集合,将IO.txt内容写进集合:
String str;
while ((str = br.readLine())!= null){
list.add(str);
}
TreeSet集合会自动根据行号自然排序好,我们再将排序好的内容输出到IOIO.txt就行了:
BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\IOIO.txt"));
for (String s : list){
bw.write(s);
bw.newLine();
}
最后不要忘了刷新关闭流:
br.close();
bw.flush();
bw.close();
完整代码如下:
package Day1112;
import java.io.*;
import java.util.TreeSet;
public class Test2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("D:\\IO.txt"));
TreeSet<String> list = new TreeSet<>();
String str;
while ((str = br.readLine())!= null){
list.add(str);
}
BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\IOIO.txt"));
for (String s : list){
bw.write(s);
bw.newLine();
}
br.close();
bw.flush();
bw.close();
}
}
在这里插入代码片