zoukankan      html  css  js  c++  java
  • Java IO(IO流)-2

    IO流 第一部分 (OutputStreamWriter BufferOutputStream)

    转换流

    超类为Reader和Writer

    是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节。它的作用的就是,将字符串按照指定的编码表转成字节,在使用字节流将这些字节写出去。

    先将字符交给转换流,然后转换流去查询指定的编码表,然后将查询后的对应编码表中的内容返回给对应的字节流,然后字节流进行对应的操作

    OutputStreamWriter

    构造方法

    • OutputStreamWriter(OuputStream out) // 传递进来一个OuputStream(多态)

    • OutputStreamWriter(OutputStream out, String charsetName) String charsetName 传递编码表名字 GBK UTF-8

    使用

        						FileOutputStream fos = new FileOutputStream("c:\utf.txt");
    						//创建转换流对象,构造方法保证字节输出流,并指定编码表是UTF-8
    						OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
    						osw.write("你好");
    						osw.close();
    

    InputSteamReader(字节流向字符)

    先将通过InputStream类读取字符,然后给InputSteamReader , InputSteamReader 查询编码表然后转换成字符输出

    构造方法

    • InputSteamReader(InputStream out)

    • InputSteamReader(InputStream out,String charsetName)

    使用

                InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream("d://deo2.txt"));
                char[] b = new char[2];
                
                int len = 0;
                
                while((len = inputStreamReader.read(b))!=-1){
                    System.out.println(new String(b,0,len));
                }
                inputStreamReader .close();
            
    

    输出流的子类

    子类可以直接操作文件,但是不能指定编码格式,默认使用系统默认的格式

    FileReader fr = new FileReader("a.txt");

    缓冲流

    • 提高输入输出的效率

    • 分为字节缓冲流与字符缓冲流

    BufferedOutputStream(字节输出流缓冲流)

    构造方法

    • BufferedOutputStream(OutputStream out)

    使用

    					//创建字节输出流缓冲流的对象,构造方法中,传递字节输出流
    					BufferedOutputStream bos = new
    							BufferedOutputStream(new FileOutputStream("c:\buffer.txt"));
    					
    					bos.write(55);
    					
    					byte[] bytes = "HelloWorld".getBytes();
    					
    					bos.write(bytes);
    					
    					bos.write(bytes, 3, 2);
    					
    					bos.close();
    
    

    BufferedInputStream (字节输入流缓冲流)

    构造方法

    • BufferedInputStream(InputStream in)
    					//创建字节输入流的缓冲流对象,构造方法中包装字节输入流,包装文件
    					BufferedInputStream bis = new 
    							BufferedInputStream(new FileInputStream("c:\buffer.txt"));
    					byte[] bytes = new byte[10];
    					int len = 0 ;
    					while((len = bis.read(bytes))!=-1){
    						System.out.print(new String(bytes,0,len));
    					}
    					bis.close();
    

    BufferedWriter(字符输出流缓冲流)

    构造方法

    • BufferedWriter(Writer w)

    BufferedWriter具有一个特殊的方法 newLine() 作用为换行 (平台无关性)

    					FileWriter fw = new FileWriter("c:\buffer.txt");
    					BufferedWriter bfw = new BufferedWriter(fw);
    					
    					bfw.write(100);
                                            bfw.newLine();
    					bfw.flush();
    
    

    BufferedReader

    构造方法

    BufferedReader(Reader r)

    有独特的方法 readLine() 读取一行 , 只返回行的有效字符,不包含 (即读出来的数据是一行)

        					int lineNumber = 0;
    					//创建字符输入流缓冲流对象,构造方法传递字符输入流,包装数据源文件
    					BufferedReader bfr = new BufferedReader(new FileReader("c:\a.txt"));
    					//调用缓冲流的方法 readLine()读取文本行
    					//循环读取文本行, 结束条件 readLine()返回null
    					String line = null;
    					while((line = bfr.readLine())!=null){
    						lineNumber++;
    						System.out.println(lineNumber+"  "+line);
    					}
    					bfr.close();
    

    通过字符流缓冲区流复制文本文件

    					BufferedReader bfr = new BufferedReader(new FileReader("c:\w.log"));	
    					BufferedWriter bfw = new BufferedWriter(new FileWriter("d:\w.log"));
    					//读取文本行, 读一行,写一行,写换行
    					String line = null;
    					while((line = bfr.readLine())!=null){
    						bfw.write(line);
    						bfw.newLine();
    						bfw.flush();
    					}
    					bfw.close();
    					bfr.close();
    
  • 相关阅读:
    HBase Coprocessor 剖析与编程实践
    图数据库实践系列 (一)Neo4J简介与安装
    BootStrap入门教程 (三)
    图数据库实践系列 (三)Neo4j Spatial的REST集成
    BootStrap入门教程 (二)
    R与GIS实践系列Shapefile导入与地图显示
    空间分析读书笔记
    BootStrap入门教程 (四)
    Java并发之线程池的使用浅析
    RSA详解
  • 原文地址:https://www.cnblogs.com/liyuhui-Z/p/7705950.html
Copyright © 2011-2022 走看看