一、字符输入流
1、使用步骤
1、创建FileReader对象,构造方法中绑定要读取的数据源
2、使用FileReader对象方法reader读取文件
3、释放资源
2、代码1
public class Demo09 {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("E:\\D.txt");
int len = 0;
//一次读取单个字符
while((len=fr.read())!=-1){
System.out.println((char) len);
}
}
}
结果:
3、代码2
public class Demo10 {
public static void main(String[] args) throws IOException {
FileReader fe = new FileReader("E:\\D.txt");
char[] cs = new char[1024];//存储读取的多个字符
int len =0;//记录的是每次读取的有效字符数
while((len=fe.read(cs))!=-1){
System.out.println(new String(cs,0,len));
}
}
}
结果:
二、字符输出流
1、使用步骤
1、创建FileWriter对象,构造方法中绑定要写入数据的目的地
2、使用FileWriter中的writer,把数据写入到内存缓冲区中(字符转换为字节的过程)
3、使用FileWriter中的方法flush,把内存缓冲区中数据,刷新到文件中
4、释放资源(会先把内存缓冲区中数据刷新到文件中)
2、代码1
public class Demo11 {
public static void main(String[] args) throws IOException {
//1、创建FileWriter对象,构造方法中绑定要写入数据的目的地
FileWriter fw = new FileWriter("E:\\E.txt");
//2、使用FileWriter中的writer,把数据写入到内存缓冲区中(字符转换为字节的过程)
fw.write(98);
//3、使用FileWriter中的方法flush,把内存缓冲区中数据,刷新到文件中
fw.flush();
//4、释放资源(会先把内存缓冲区中数据刷新到文件中)
fw.close();
}
}
3、代码2
public class Demo12 {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("E:\\E.txt");
char[] cs = {'a','d','c','w'};
fw.write(cs);
fw.write(cs,0,2);
fw.write("程序员");
fw.flush();
fw.close();
}
}
3、代码3
public class Demo13 {
public static void main(String[] args) throws IOException {
//添加追加写开关(在原有内容上继续写)
FileWriter fw = new FileWriter("E:\\E.txt",true);
for(int i=0;i<10;i++){
fw.write("你好"+"\r\n");
}
fw.close();
}
}
三、异常处理
代码:
public class Demo13 {
public static void main(String[] args){
FileWriter fw = null;
try {
//可能会产生异常的代码
fw = new FileWriter("E:\\E.txt", true);
for (int i = 0; i < 10; i++) {
fw.write("你好" + "\r\n");
}
}catch (IOException e){
//异常处理逻辑
System.out.println(e);
}finally {
//一定会执行的代码
//如果创建失败。fw的默认值就是null,null是不能调用方法的,会抛出NullPointerException,需要增加一个判断
//不是null再把资源释放掉
if(fw!=null){
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}