Reader
用于读取字符流的抽象类。
InputStreamReader
是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符
FileReader
用来读取字符文件的便捷类
BufferedReader
从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
Writer
写入字符流的抽象类
OutputStreamWriter
是字符流通向字节流的桥梁:使用指定的 charset 将要向其写入的字符编码为字节
FileWriter
用来写入字符文件的便捷类
BufferedWriter
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入
1.字符流复制数据字节
public static void main(String[] args) throws IOException { //数据源
FileReader fReader = new FileReader("a.txt"); //目的地
FileWriter fWriter = new FileWriter("b.txt");
int by = 0; while((by=fReader.read())!=-1){
fWriter.write(by);
}
fReader.close();
fWriter.close();
}2.字符数组
public class copy4 { public static void main(String[] args) throws IOException { //数据源
FileReader fReader = new FileReader("a.txt"); //目的地
FileWriter fWriter = new FileWriter("b.txt");
char[] chs = new char[1024]; int len = 0; while((len = fReader.read(chs))!=-1){
fWriter.write(chs,0,len);
fWriter.flush();
}
fReader.close();
fWriter.close();
}
}3.字符缓冲数组
public class copy5 { public static void main(String[] args) throws IOException { //数据源
BufferedReader br = new BufferedReader(new FileReader("a.txt")); //目的地
BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));
char[] chs = new char[1024]; int len = 0; while((len = br.read(chs))!=-1){
bw.write(chs,0,len);
bw.flush();
} //释放资源
br.close();
bw.close();
}
}4.字符缓冲流
newLine();换行方法
readLine()方法到末尾返回null
String line = null;while((line=br.readLine())!=null){
System.out.println(line);
}5.字符流
public class copy6 {
public static void main(String[] args) throws Exception { //数据源
String srcStr1= "a.txt"; //目的地
String srcStr2= "b.txt";
mathod(srcStr1,srcStr2);
} private static void mathod(String srcStr1, String srcStr2) throws IOException {
BufferedReader br= new BufferedReader(new FileReader(srcStr1));
BufferedWriter bw= new BufferedWriter(new FileWriter(srcStr2));
String line = null; while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}6.字符流与集合数组
public class ArrayListToFile {
public static void main(String[] args) throws IOException {
//数据源
ArrayList<String> array = new ArrayList<String>(); //添加数据
array.add("hello"); array.add("word"); array.add("java"); //目的地
BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
for (String string : array) {
bw.write(string);
bw.newLine();
bw.flush();
} //释放资源
bw.close();
}7.学生类
1.创建学生类
2.创建排序集合TreeSet<Student>
3.创建键盘输入
4.添加进学生类
5.添加进集合
6.创建输出流
7.写入文本
public class SortInfo {
public static void main(String[] args) throws IOException { //创建排序集合
TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
int sum = s2.sum()-s1.sum(); int sum1 = sum == 0 ? s2.getChinese()-s1.getChinese():sum; int sum2 = sum1 == 0 ?s2.getMath()-s1.getMath():sum1; int sum3 = sum2 == 0 ?s2.getName().compareTo(s1.getName()):sum2; return sum3;
}
});
//创建键盘输入
for(int i =0 ;i< 5 ;i++){
Scanner input = new Scanner(System.in);
System.out.println("请输入第"+(i+1)+"次得学生信息");
System.out.println("学生姓名:");
String name = input.nextLine();
System.out.println("语文成绩:"); int chinese = input.nextInt();
System.out.println("数学成绩:"); int math = input.nextInt();
System.out.println("英语成绩:"); int english = input.nextInt(); //创建学生对象
Student student = new Student();
student.setMath(math);
student.setChinese(chinese);
student.setEnglish(english);
student.setName(name); //添加进入集合
ts.add(student);
} //创建输出流
BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
bw.write("学生信息如下:");
bw.newLine();
bw.flush();
bw.write("姓名,语文,数学,英语");
bw.newLine();
bw.flush(); for (Student stu : ts) {
StringBuilder sb = new StringBuilder();
sb.append(stu.getName()).append(",").append(stu.getChinese()).append(",")
.append(stu.getMath()).append(",").append(stu.getEnglish());
bw.write(sb.toString());
bw.newLine();
bw.flush();
}
//释放资源
bw.close();
}
}8.将文本中的字符排序后加入到另一个文本中
/**
1.已知s.txt文件中有一个字符串“ndjdnsnakdapiiisnjvmsdsiajdsailn”;
2.读取文件的内容,存储到字符串中
3.把字符串转化为字符数组
4.对字符数组进行排序
5.把字符数组转化为字符串
6.通过字符输出流把字符串输出到ss.txt
*/
public class StringArray {
public static void main(String[] args) throws IOException { //封装路径
File srcFolder = new File("H:\\s.txt");
File destFolder = new File("H:\\ss.txt"); //字符读取流
BufferedReader br = new BufferedReader(new FileReader(srcFolder)); //读取字符串
StringBuilder sb = new StringBuilder();
String line = null; while((line = br.readLine())!=null){
sb.append(line);
} //字符串转化为字符数组
char[] arrays = sb.toString().toCharArray(); //将字符数组进行排序
Arrays.sort(arrays); //将字符数组转化为字符串
String str = String.valueOf(arrays);
System.out.println(str); //建立输出流输出
BufferedWriter bw = new BufferedWriter(new FileWriter(destFolder));
bw.write(str);
bw.flush();
bw.close();
}
}9.使用PrintWriter进行输出操作
public class PrintWriteDemo {
public static void main(String[] args) throws IOException {
//数据源
BufferedReader br = new BufferedReader(new FileReader("ByteArrayStreamDemo.java")); //目的地
PrintWriter pw = new PrintWriter(new FileWriter("a.java"),true);
String line = null; while((line = br.readLine())!=null){
pw.println(line);
} //释放资源
pw.close();
br.close();
}
}
作者:张晓天a
链接:https://www.jianshu.com/p/9be91891bcd2
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦