Java基础——IO流

来源:互联网 发布:手机加速网络器图片 编辑:程序博客网 时间:2024/06/05 13:22

 ------- android培训、java培训、期待与您交流! ----------

字符流的特点:数据最常见的体现形式是:文件需求:在硬盘上,创建一个文件,并写入一些文字数据。用于操作操作文件的Writer的子类FileWriter,后缀名是父类名。前缀名是该流对象的功能。操作步骤:1.创建一个FileWriter对象。该对象一被初始化就必须明确要被操作的文件,该文件会被创建到指定目录下,如果该目录下已经有同名文件,将被覆盖FileWriter fw=new FileWriter("demo.txt");2.调用write方法,将字符串写入到流中。fw.write();3.刷新流对象中的缓冲中的数据,将数据刷到目的地fw.flush();4.关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据,将数据刷到目的地中。和flush的区别,flush刷新后,流可以继续使用,close刷新后将会将流关闭。fw.close();
练习 :读取一个.java文件。并打印在控制台上。FileReader fr=null;char[] buf=new char[1024];int num=0;try {fr= new FileReader("a.txt");try {while((num=fr.read(buf))!=-1){System.out.print(new String(buf,0,num));}} catch (IOException e) {e.printStackTrace();}} catch (FileNotFoundException e) {e.printStackTrace();}finally{   try {                               if(fr!=null)fr.close();} catch (IOException e) {e.printStackTrace();}}
————————————————————————————————————————————————

字符流的缓冲区缓冲区的出现提高了对数据的读写效率对应类:BUfferWriterBufferedReader特点:缓冲区要结合流才可以使用,在创建缓冲区之前,必须要有流对象。在流的基础上对流的功能进行了增强。BUfferWriter步骤:1.创建一个字符写入流对象FileWriter fw=new FileWriter("a.txt");2.将需要被提高效率的流对象作为参数传递给缓冲区的构造函数bufferedWriter bufw=new BufferedWriter(fw);buff.write("asdasdas");bufw.newLine();//换行符,跨平台的3.将缓冲区刷新bufw.flush;4.关闭缓冲区,就是在关闭缓冲区中的流对象bufw.close();BufferedReader步骤1.创建一个字符写入流对象FileReader fr=new FileReader ("a.txt");2.将需要被提高效率的流对象作为参数传递给缓冲区的构造函数BufferedReader bufr=new BufferedReader (fr);3.读取流对象:该缓冲区提供了一个一次读取一行的方法。当返回null时表示,文件读到末尾String line=null;while((line=bufr.readLine())!=null){String s=line;}4.关闭bufr.close();readLine()方法的原理:无论是读一行,获取多个字符,最终都是在硬盘上一个一个读取,最终使用额还是read方法一次读一个的方法。
缓冲区练习.:通过缓冲区复制一个文件    BufferWriter bufw=null; BufferReader bufr=null;  try {  bufw=new BufferWriter(new FileWriter("b.txt"));  bufr=new BufferReader(new FileReader("a.txt")); String line=null;  while ((line=buffr.read(buf))!=null){  bufw.write(line);                    bufw.newLine();                    bufw.flsuh;  }}  catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}  finally{   try {fr.close();} catch (IOException e) {e.printStackTrace();}      try {fw.close();} catch (IOException e) {e.printStackTrace();}}
————————————————————————————————————————————————

操作图片数据就要用到字节流。字符流使用的是字符数组char[],字节流使用的是字节数组byte[]。字节流:InputStream 读Outputstream 写读取FileInputStream fis=new FileInputStream ("a.txt");byte[] buf=new byte[fis].available(0)];//定义一个刚刚好的缓冲区,不用再循环了fis.read(buf);System.out.println(new String(buf));fis.close();练习:复制图片        FileOutputStream fw=null;  FileInputStream fr=null;  try {  fos=new FileOutputStream("b.jpg");  fis=new FileInputStream("a.jpg");  byte[] buf=new byte[1024];  int num=0;  while ((num=fis.read(buf))!=-1){ fis.write(buf,0,num);  }}  catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}  finally{   try {                      if(fis!=null)fis.close();} catch (IOException e) {e.printStackTrace();}      try {fos.close();} catch (IOException e) {e.printStackTrace();}}
————————————————————————————————————————————

读取键盘录入System.out:对应的是标准输出设备,控制台System.in:对应的标准输入设备,键盘代码 InputStream in=System.in;  int by=in.read();   sop(by);结束录入   in.close
————————————————————————————————————————

转换流读取转换流:InputStreamReader写入转换流:OutputStreamReader读取转换流:InputStreamReader 字节流通向字符流的桥梁步骤 1.获取键盘录入对象Inputstream in=System.in2.将字节流对象转换成字符流对象,使用转换流InputStreamReader InputStreamReader isr=new InputStreamReader(in);3.提高效率使用字符流缓冲区 BufferedReader进行读取BufferedReader bf=new BufferedReader(is);String line=null;while((line=bf.readLine())!=null){    if("over".equals(line))     break;    sop(line);}bufr.close;写入转换流:OutputStreamReader 字符流通向字节流的桥梁步骤 1.获取输出对象Outputstream out=System.out2.将字符流对象转换成字节流对象,使用转换流OutputstreamWriter OutputstreamWriter osw=new OutputstreamWriter(out);3.提高效率使用字符流缓冲区 BufferedWriter进行写入BufferedWriter bw=new BufferedWriter(osw);String line=null;while((line=bf.readLine())!=null){    if("over".equals(line))     break;    bw.write(line);    bufw.newLine();}bufr.close;
——————————————————————————————————————————————————————

转换流读取转换流:InputStreamReader写入转换流:OutputStreamReader读取转换流:InputStreamReader 字节流通向字符流的桥梁步骤 1.获取键盘录入对象Inputstream in=System.in2.将字节流对象转换成字符流对象,使用转换流InputStreamReader InputStreamReader isr=new InputStreamReader(in);3.提高效率使用字符流缓冲区 BufferedReader进行读取BufferedReader bf=new BufferedReader(is);String line=null;while((line=bf.readLine())!=null){    if("over".equals(line))     break;    sop(line);}bufr.close;写入转换流:OutputStreamReader 字符流通向字节流的桥梁步骤 1.获取输出对象Outputstream out=System.out2.将字符流对象转换成字节流对象,使用转换流OutputstreamWriter OutputstreamWriter osw=new OutputstreamWriter(out);3.提高效率使用字符流缓冲区 BufferedWriter进行写入BufferedWriter bw=new BufferedWriter(osw);String line=null;while((line=bf.readLine())!=null){    if("over".equals(line))     break;    bw.write(line);    bufw.newLine();}bufr.close;

0 0
原创粉丝点击