字符流和字节流


/*
字符流和字节流:

字节流两个基类:
InputStream OutputStream

字符流两个基类:
Reader Writer

先学习一下字符流特点。

既然IO流是用于操作数据的。
那么数据的最常见体现形式是:文件。

那么先以操作文件为主来显示。

需求:在硬盘上,创建一个文件并写入一些文字数据。

找到一个专门用于操作文件的Writer子类对象,FileWriter.
后缀名是父类名,前缀名是该流对象的功能。
*/

public class FileWriterDemo {

    public static void main(String[] args) throws IOException
    {
        
        //1、创建一个FileWriter对象,该对象一被初始化就必须要明确要操作的文件
        //而且该文件会被创建到指定目录下,如果该目录下已有同名文件,将被新的覆盖。
        //其实该步就是在明确数据将要存放的目的地。
        FileWriter fw = new FileWriter("demo.txt");
        
        //调用write方法,将字符串写入到流中。
        fw.write("abcde");
        
        //关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据,
        //将数据刷到目的地中,
        //和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。
        fw.close();
        
        //刷新流对象中的缓冲中的数据,
        //将数据刷到目的地中。
        //fw.flush();
        
        fw.write("haha");
//        fw.flush();
    }

}
FileWriterDemo

第二种方式:通过字符数组进行读取

public class FileReaderDemo2 {

    public static void main(String[] args) throws IOException{
        
        FileReader fr = new FileReader("demo.txt");
        
        //定义一个字符数组,用于存储读到字符。
        //该read(char[])返回的是读到字符个数。
        char[] buf = new char[1024];
        
        int num = 0;
        while((num=fr.read(buf))!=-1)
        {
            System.out.println(new String(buf,0,num));
        }
        
//        int num = fr.read(buf);
        
//        System.out.println("num+"+num+"..."+new String(buf));
        
//        int num2 = fr.read(buf);
//        
//        System.out.println("num2+"+num2+"..."+new String(buf));
//        
//        int num3 = fr.read(buf);
//        
//        System.out.println("num3+"+num3+"..."+new String(buf,0,num3));
//
//        int num4 = fr.read(buf);
//        
//        //System.out.println("num4+"+num4+"..."+new String(buf,0,num4));
        fr.close();
    }

}
FileReaderDemo2
原文地址:https://www.cnblogs.com/cailingsunny/p/4697311.html