字符流和字节流
/*
字符流和字节流:
字节流两个基类:
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(); } }
第二种方式:通过字符数组进行读取
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(); } }
欢迎各路侠客多多指教^_^