package fighting;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Arrays;
public class Test6 {
/**
* 6、 已知文件a.txt文件中的内容为“bcdeadferwplkou”,请编写程序读取该文件内容,并按照自然顺序排序后输出到b.txt文件中。
* 即b.txt中的文件内容应为“abcd…………..”这样的顺序。
*
*/
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new FileReader("src\\a.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("src\\b.txt"));
String line = br.readLine();
System.out.println(line);
char[] str=line.toCharArray();
Arrays.sort(str);
System.out.println(str);
bw.write(str);
br.close();
bw.close();
}
}
package com.itheima;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class Test6 {
/**
* 6、 已知文件a.txt文件中的内容为“bcdeadferwplkou”,请编写程序读取该文件内容,并按照自然顺序排序后输出到b.txt文件中。
* 即b.txt中的文件内容应为“abcd…………..”这样的顺序。
*
*/
public static void main(String[] args) throws Exception {
//定义输入流
FileReader fr= new FileReader("src\\a.txt");
//定义输出流
FileWriter fw= new FileWriter("src\\b.txt");
//定义ArrayList存储输入流中的字符
ArrayList<Character> list = new ArrayList<Character>();
int n=0;
//读取输入流中所有数据,依次存储到集合中,调用add方法的同时进行比较
while((n=fr.read())!=-1){
list.add((char)n);
}
Collections.sort(list);
//将集合中的内容迭代输出到b.txt
Iterator it = list.iterator();
while(it.hasNext()){
Character element = (Character)it.next();
fw.write(element.toString());
}
//关闭资源,数据刷新到文件中
fr.close();
fw.close();
}
}
package com.itheima;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class Test6 {
/**
* 6、 已知文件a.txt文件中的内容为“bcdeadferwplkou”,请编写程序读取该文件内容,并按照自然顺序排序后输出到b.txt文件中。
* 即b.txt中的文件内容应为“abcd…………..”这样的顺序。
* 思路:1,由于是文本文件,所以想到用字符流操作
* 2,由于要每个字符比较大小,所以使用FileReader的read方法。
* 3,依次读取文件内容,存到TreeSet集合中。(由于按照自然顺序排序,所以我想到了TreeSet)
* 4,利用TreeSet比较器的排序功能排好序后,迭代输出到b.txt
*
*/
public static void main(String[] args) throws Exception {
//定义输入流
FileReader fr= new FileReader("src\\a.txt");
//定义输出流
FileWriter fw= new FileWriter("src\\b.txt");
//定义TreeSet存储输入流中的字符
TreeSet<Character> ts = new TreeSet<Character>(new MyCompare());
int n=0;
//读取输入流中所有数据,依次存储到集合中,调用add方法的同时进行比较
while((n=fr.read())!=-1){
ts.add((char)n);
}
//将集合中的内容迭代输出到b.txt
Iterator it = ts.iterator();
while(it.hasNext()){
Character element = (Character)it.next();
fw.write(element.toString());
}
//关闭资源,数据刷新到文件中
fr.close();
fw.close();
}
}
class MyCompare implements Comparator{
public int compare(Object o1,Object o2){
Character s1 = (Character)o1;
Character s2 = (Character)o2;
int num = s1.compareTo(s2);
//由于TreeSet集合不能存储相同元素,所以如果两个元素相等,需要改变返回值。
if(num==0){
return 1;
}
return num;
}
}