你的程序有三处不妥:已经标注,尤其第一条!(流关联的文件已经修改,但不会影响程序效果。)
import java.io.*;
import java.util.*;
public class Exercise3
{
// 3.将day19-笔记.txt中的所有字符按照码表值排序不去重复, 存入另一个文件中(也就是aaaabbbbbbccccc.....的方式)
public static void main(String[] args) throws IOException
{
Reader in = new BufferedReader(new FileReader("Exercise3.java"));
Set<Character> set = new TreeSet<Character>(new MyComparator());
int b;
while((b = in.read()) != -1)
{
if((b>=65 && b<=90)||(b>=97 && b<=122))//1.如果只取英文字符的话,要进行条件判断。
set.add((char)b);
}
in.close();//2.在此关闭输入流并没有错误,但一般会在整个读写过程完毕后关闭输入流和输出流。
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("123")));//3. 文件最好有扩展名。当然如果没有的话,
//强制使用记事本打开文件也是可以的(程序的严谨性,你懂得)
for(char ch : set)
out.write(ch);
out.close();
}
}
class MyComparator implements Comparator<Character>
{
public int compare(Character a, Character b)
{
return a - b != 0 ? a - b : 1;
}
}