1.字符流写数据
-
介绍
Writer: 用于写入字符流的抽象父类
FileWriter: 用于写入字符流的常用子类
-
构造方法
方法名 说明 FileWriter(File file) 根据给定的 File 对象构造一个 FileWriter 对象 FileWriter(File file, boolean append) 根据给定的 File 对象构造一个 FileWriter 对象 FileWriter(String fileName) 根据给定的文件名构造一个 FileWriter 对象 FileWriter(String fileName, boolean append) 根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象 -
成员方法
方法名 说明 void write(int c) 写一个字符 void write(char[] cbuf) 写入一个字符数组 void write(char[] cbuf, int off, int len) 写入字符数组的一部分 void write(String str) 写一个字符串 void write(String str, int off, int len) 写一个字符串的一部分 -
刷新和关闭的方法
方法名 说明 flush() 刷新流,之后还可以继续写数据 close() 关闭流,释放资源,但是在关闭之前会先刷新流。一旦关闭,就不能再写数据
代码演示1:
package com.demozifu;
import java.io.FileWriter;
import java.io.IOException;
public class CharStreamDemo05 {
public static void main(String[] args) throws IOException {
//flush()刷新流。刷新完毕之后,还可以继续写数据
//close()关闭流。释放资源。一旦关闭,就不能写数据
FileWriter fw= new FileWriter("day11\\aaa.txt");
String s="你好我好大家好";
fw.write(s);
//fw.flush(); 不关闭的话,刷新flush方法也可以添加数据
fw.write(97);
//fw.flush();
fw.close();//关闭流,释放资源,但是在关闭之前会先刷新流。一旦关闭,就不能再写数据
//fw.write("aaa"); 关闭之后再写入会报错Stream closed
}
}
2.字符流读数据
-
介绍
Reader: 用于读取字符流的抽象父类
FileReader: 用于读取字符流的常用子类
-
构造方法
方法名 说明 FileReader(File file) 在给定从中读取数据的 File 的情况下创建一个新 FileReader FileReader(String fileName) 在给定从中读取数据的文件名的情况下创建一个新 FileReader
-
成员方法
方法名 说明 int read() 一次读一个字符数据 int read(char[] cbuf) 一次读一个字符数组数据
代码演示2:
package com.demozifu;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
public class CharStreamDemo07 {
public static void main(String[] args) throws IOException {
//创建字符输入流的对象
FileReader fr= new FileReader("day11\\aaa.txt");
//创建一个数组
char[] chars= new char[1024];
int len;
//一次读取多个字符
while ((len=fr.read(chars))!=-1){
System.out.println(new String(chars,0,len));
}
fr.close();
}
}
代码演示3:
package com.demozifu;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class CharStreamDemo08 {
public static void main(String[] args) throws IOException {
//将键盘录入的用户名和密码保存到本地实现永久化存储
//要求:用户名单独一行,密码独占一行
//创建字符输入流的对象
FileWriter fw= new FileWriter("day11\\student.txt");
Scanner sc= new Scanner(System.in);
System.out.println("请输入用户名:");
String username = sc.next();
System.out.println("请输入密码:");
String password = sc.next();
fw.write(username);
fw.write("\r\n");
fw.write(password);
fw.write("\r\n");
//刷新流
fw.flush();
//关闭资源
fw.close();
FileReader fr= new FileReader("day11\\student.txt");
//字符流用的数组是char类型
char[] bytes= new char[1024];
int len;
System.out.println("用户名和密码是:");
while ((len=fr.read(bytes))!=-1){
String s= new String(bytes,0,len);
System.out.println(s);
}
}
}
注意:
1.复制文件必须使用字节流
2.字节流里使用byte类型的数组进行读入,字符流里使用char类型的数组进行读入