字符流基类:Writer、Readerjava
字节流基类:InputStream、OutputStreamwindows
IO流中后缀名为父类名,前缀名为该类的功能描述。数组
字符流其实同样走的字节,他须要把读好的字节临时存起来,而后查找编码表,字符流底层用的也是字节流缓冲区,字符流底层用数组将数据临时存储,因此须要刷新动做编辑器
建立FileWriter流对象的示例:ide
需求:在硬盘上,建立一个文件并写入一些文字数据。 找到一个专门用于操做文件的Writer子类对象。FileWriter。 后缀名是父类名。 前缀名是该流对象的功能。 */ import java.io.*; class FileWriterDemo { public static void main(String[] args) throws IOException { //建立一个FileWriter对象。该对象一被初始化就必需要明确被操做的文件(参数为被操做的文件名)。 //并且该文件会被建立到指定目录下。若是该目录下已有同名文件,将被覆盖。 //其实该步就是在明确数据要存放的目的地。 FileWriter fw = new FileWriter("demo.txt");//参数可指定路径如:"D:\\demo.txt"(将demo.txt指定到D盘(windows系统下)) //调用write方法,将字符串写入到流中。 fw.write("abcde"); //刷新流对象中的缓冲中的数据。 //将数据刷到目的地中。 //fw.flush(); //关闭流资源,可是关闭以前会刷新一次内部的缓冲中的数据。 //将数据刷到目的地中。 //和flush区别:flush刷新后,流能够继续使用,close刷新后,会将流关闭。 fw.close(); } }
IO异常处理方式演示:编码
/* IO异常的处理方式。 */ import java.io.*; class FileWriterDemo2 { public static void main(String[] args) { //在外部建立变量,在后面进行赋值,避免了变量做用域的局限性。 FileWriter fw = null; try { fw = new FileWriter("demo.txt"); fw.write("abcdefg"); } catch (IOException e) { System.out.println("catch:"+e.toString()); } finally { try { if(fw!=null)//若不为空则证实建立流对象的操做成功了并未发生异常 fw.close(); } catch (IOException e) { System.out.println(e.toString()); } } } }
演示对已有文件的数据续写:spa
/* 演示对已有文件的数据续写。 */ import java.io.*; class FileWriterDemo3 { public static void main(String[] args) throws IOException { //传递一个true参数,表明不覆盖已有的文件。并在已有文件的末尾处进行数据续写。 //若该文件不存在则建立一个文件。 FileWriter fw = new FileWriter("demo.txt",true); fw.write("nihao\r\nxiexie");//反斜杠r加反斜杠n(\r\n)为windows系统txt编辑器中的换行。 fw.close(); } }
演示对已有文件的读取方式:code
reade(char[] cbuf):该方法返回的是读取字符的个数,该方法将字符读入参数数组中。对象
import java.io.*; class FileReaderDemo { public static void main(String[] args) { FileReader fr = null; //定义一个字符数组,用于存储读到的数据。 //该数组长度通常定义为1024的整数倍。 char [] array = new char[1024]; int num = 0; try { //建立一个文件读取流对象,和指定名称的文件相关联。 //需保证文件存在,不然会报FileNotFoundException(文件不存在异常) fr = new FileReader("E:\\GUOZHICHAO.txt"); //循环读取并输出, while ((num=fr.read(array))!=-1) { System.out.println(new String(array,0,num)); } } catch (IOException e) { System.out.println(e.toString()); } finally { try { if (fr!=null) { fr.close(); } } catch (IOException e) { System.out.println(e.toString()); } } } }
文件的复制过程:blog
//将C盘一个文本文件复制到D盘。 /* 复制的原理: 其实就是将C盘下的文件数据存储到D盘的一个文件中。 步骤: 1,在D盘建立一个文件。用于存储C盘文件中的数据。 2,定义读取流和C盘文件关联。 3,经过不断的读写完成数据存储。 4,关闭资源。 */ import java.io.*; class CopyText { public static void main(String[] args) throws IOException { copy_2(); } public static void copy_2() { FileWriter fw = null; FileReader fr = null; try { fw = new FileWriter("SystemDemo_copy.txt"); fr = new FileReader("SystemDemo.java"); char[] buf = new char[1024]; int len = 0; while((len=fr.read(buf))!=-1) { fw.write(buf,0,len); } } catch (IOException e) { //由于读写都失败了处理不了,能够将流关掉并删除文件。 throw new RuntimeException("读写失败");//此处为简单异常处理 } finally { if(fr!=null) try { fr.close(); } catch (IOException e) { } if(fw!=null) try { fw.close(); } catch (IOException e) { } } } //从C盘读一个字符,就往D盘写一个字符。 public static void copy_1()throws IOException { //建立目的地。 FileWriter fw = new FileWriter("RuntimeDemo_copy.txt"); //与已有文件关联。 FileReader fr = new FileReader("RuntimeDemo.java"); int ch = 0; while((ch=fr.read())!=-1) { fw.write(ch); } fw.close(); fr.close(); } }
英语时间:
File:
Process:
mode:
Writer:
copy: