作业一:已知s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl”请编写程序读取数据内容,把数据排序后写入ss.txt中。
方式1:使用高效字符流,一次读取一个字符
/*
* 需求:
* 已知s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl”
* 请编写程序读取数据内容,把数据排序后写入ss.txt中
* */
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) throws IOException {
// 创建字符输入流对象
BufferedReader br = new BufferedReader(new FileReader("s.txt"));
// 创建字符输出流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("ss.txt"));
// 创建ArrayList集合对象
ArrayList<Character> al = new ArrayList<Character>();
// 使用高效字符输入流获取
int ch = 0;
while ((ch = br.read()) != -1) {
// 添加至集合中
al.add((char) ch);
}
// 遍历集合并排序
for (int i = 0; i < al.size() - 1; i++) {
for (int j = 0; j < al.size() - i - 1; j++) {
char c1 = al.get(j);
char c2 = al.get(j + 1);
if (c1 > c2) {
al.set(j, c2);
al.set(j + 1, c1);
}
}
}
// 将集合转为Character型数组
Character[] chs = al.toArray(new Character[al.size()]);
for (int i = 0; i < chs.length; i++) {
// 将Character对象转换为char类型
char c = chs[i].charValue(); // public char charValue() 返回此对象的基本char值
// 将字符使用输出流写入ss.txt文件中
bw.write(c);
// 刷新流
bw.flush();
}
// 释放资源
br.close();
bw.close();
}
}
方法2:使用高效字符流,一次读取一行
/*
* 需求:
* 已知s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl”
* 请编写程序读取数据内容,把数据排序后写入ss.txt中
* */
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
public class Homework4 {
public static void main(String[] args) throws IOException {
// 创建字符输入流对象
BufferedReader br = new Bu