字符流

字符流

Reader&FileReader类

java.io.Reader字符输入流,他是字符输入流的最顶层的父类,定义了一些共性的成员方法。是一个抽象类。

成员方法:
  • int read();读取单个字符

  • int read(char[] cbuf);一此读取多个字符

  • void close();释放资源


java.io.FIleReader extends InputStramReader extends Reader;

FileReader 文件字符输入流

作用:把硬盘中的数据已字符的形式读入到内存中来。

构造方法:
  • FileReader(String filename) 参数:文件路径
  • FileReader(File file) 参数:文件对象

**作用:**创建FileReader对象,把该对象指向我们要读取的文件。


一、字符输入流使用方法

1.使用步骤:
  • 创建FileReader对象。构造方法中绑定数据源。
  • 使用read读取文件
  • 释放资源
2.实例
public class InCharDemo {
    public static void main(String[] args) throws IOException {
        FileReader fid1= new FileReader("E:\\learning\\20190222javaee  博学谷\\test\\a.txt");

       //一次读入一个字符
        int content=0;
        while ((content=fid1.read())!=-1){
            System.out.print((char)content);
        }
        fid1.close();
        //使用一次读入多个字符
        FileReader fid2= new FileReader("E:\\learning\\20190222javaee  博学谷\\test\\a.txt");
        int len=0;
        char[] chars=new char[2];
        while ((len=fid2.read(chars))!=-1){
            System.out.print(new String(chars));
        }
        fid2.close();
    }
}

二、字符输出流 Writer&FileWriter

java.io.FileWriteer Extends OutputStreamWirter extends Writer;

FileWriter:文件字符输出流

**作用:**把内存中字符写入到文件中。

**构造方法:**创建一个FileWriter对象,根据传递的参数创建文件,把FileWriter指向该文件。

​ FileWriter(File file) 根据文件对象创建FileWriter对象。

​ FileWriter(String filename) 根据文件路径创建FileWriter对象。

1.使用步骤
  • 创建FileWriter对象,构造方法中绑定要写入数据的目的地。
  • 使用write方法,把数据写入到内存缓冲区中,(字符转换为字节的过程)
  • 使用FileWirter中的flush,把内存缓冲区中的数据,刷新到文件中。
  • 释放资源(会先把内存缓冲区中的数据刷新到文件中)
2.实例
public class Demo18Writer {
    public static void main(String[] args) throws IOException{
        FileWriter fit = new FileWriter("E:\\learning\\20190222javaee  博学谷\\test\\a.txt");
        fit.write(97);
        fit.flush();
        fit.close();
    }
}
3.flush和close的区别

flush:刷新缓冲区,流对象可以继续使用

close:先刷新缓冲区,然后通知系统释放资源,流对象不能再被使用了。

4.其它方法

字符输出流写数据的其它方法:

​ void writer(char[] cbuf):写入字符数组

​ abstract void writer(char[] cbuf,int off,int len)写入字符数组的某一部分,off开始索引,len字符个数

​ void write(String str) 写入字符串

​ void write(String str,int off,int len)写入字符串的某一部分,off开始索引,len字符个数

public static void main(String[] args) throws IOException{
        FileWriter fit = new FileWriter("E:\\learning\\20190222javaee  博学谷\\test\\a.txt");
        fit.write(97);
        char[] ch={'1','b','c','d'};
        fit.write(ch);
        fit.write('\n');
        fit.write(ch,0,2);
        fit.write('\n');
        String str="这是一个字符串测试";
        fit.write(str);
        fit.write('\n');
        fit.write(str,0,3);
        fit.write('\n');
        fit.flush();
        fit.close();
    }
}
5.字符输出流的续写和换行
5.1续写
`**FileWriter**(File file,  boolean append)` 
`**FileWriter**(String fileName,  boolean append)` 
5.2换行

windows:\r\n

linux:/n

mac:/r

6.IO流异常的处理
try{
    可能产生异常的代码;
}catch(IOException e){
    异常的处理逻辑;
}finally{
    释放资源;
    //如果创建对象失败,fw的默认是是null,而null不能调用close();需要加判断fw!=null,继续执行后续内容。
        //把变量定义放到try的外部,避免作用域影响。对变量进行初始化赋值(null)。
        //fw.close();=此方法也会抛出IOException 异常,需要手动处理此异常。
}
jdk7处理异常的新特性

jdk7新特性:在try的后面可以增加一个(),在括号中定义流对象,那么这个流对象的作用域就在try中有效,try中代码执行完毕,会自动释放流对象,不用谢finally.

try(FileInputStream fis = new FileInputStream("E:\\test\\a.txt");){
    可能会产生异常的代码。
}catch(IOException e){处理异常的逻辑。}
jdk9处理异常的新特性

在try前面可以定义流对象,可以在try后面的()中可以直接引入流对象的名称(变量名);在try执行完毕之后,流对象可以释放掉,不写finally.

A a = new A();
B b = new B();
try(a,b){可能会产生异常的代码
        }catch(异常变量){
    处理异常的方式。
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值