• Java I/O--字符流


          字符流以字符为单位,根据ASCll码表映射字符,一次可能读多个字节,只能处理字符类型的数据。

           同类 InputStream 和 OutputStream 一样,Reader 和 Writer 也是抽象类,只提供了一系列用于字符流处理的接口。它们的方法与类 InputStream 和 OutputStream 类似,只不过其中的参数换成字符或字符数组

    Reader类的方法:

    Writer类的方法:

    InputStreamReader 和 OutputStreamWriter 是 java.io 包中用于处理字符流的最基本的类,用来在字节流和字符流之间作为中介:从字节输入流读入字节,并按编码规范转换为字符;往字节输出流写字符时先将字符按编码规范转换为字节。使用这两者进行字符处理时,在构造方法中应指定一定的平台规范,以便把以字节方式表示的流转换为特定平台上的字符表示。
     

    InputStreamReader(InputStream in); //缺省规范说明
    
    //指定规范 enc
    
    InputStreamReader(InputStream in, String enc);
    
    OutputStreamWriter(OutputStream out); //缺省规范说明
    
    //指定规范 enc
    
    OutputStreamWriter(OutputStream out, String enc);
    
    

    如果读取的字符流不是来自本地时(比如网上某处与本地编码方式不同的机器),那么在构造字符输入流时就不能简单地使用缺省编码规范,而应该指定一种统一的编码规范“ISO 8859_1”,这是一种映射到 ASCCII 码的编码方式,能够在不同平台之间正确转换字符。

    InputStreamReader ir = new InputStreamReader(is,"8859_1");
    • 字符缓冲流

          为了提高字符流处理的效率,java.io 中也提供了缓冲流BufferedReader和BufferedWriter。除了提供read()和writer()方法,还提供处理整行字符的方法:

    1、public String readLine():BufferedReader 的方法,从输入流中读取一行字符,行结束标志 、 或者两者一起(这是根       据系统而定的)

    2、public void newLine():BufferedWriter 的方法,向输出流中写入一个行结束标志,它不是简单地换行符 或 ,而是系统定       义的行隔离标志(line separator)。

    代码示例:

    package ioTest;
    
    import java.io.BufferedReader;
    
    import java.io.FileInputStream;
    
    import java.io.FileNotFoundException;
    
    import java.io.IOException;
    
    import java.io.InputStreamReader;
    
    public class FileToUnicode {
    
          /**
    
           * @param args
    
           */
    
          public static void main(String[] args) {
    
                try {
    
                      FileInputStream fis = new FileInputStream("1.txt");
    
                      InputStreamReader dis = new InputStreamReader(fis);
    
                      BufferedReader br = new BufferedReader(dis);
    
                      
    
                      String s;
    
                      //每次读取一行,当下一行为空时结束
    
                      while((s = br.readLine()) != null){
    
                            System.out.println(s);
    
                      }
    
                      dis.close();
    
                } catch (FileNotFoundException e) {
    
                      e.printStackTrace();
    
                } catch (IOException e) {
    
                      e.printStackTrace();
    
                }
    
                
    
          }
    
    }

    参考链接:

    Java IO流学习总结:http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html

  • 相关阅读:
    linux系统 ssh免密码登录服务器主机
    QPS TPS 并发数 响应时间
    mysqlmtop开源系统监控mysql数据库性能
    jenkins 自动化构建 部署 回滚配置
    实用Linux命令记录
    关于高并发的几个基础问题
    tcp四次挥手
    时序数据异常检测相关的问题记录
    判断时序数据的周期性
    最短路径问题
  • 原文地址:https://www.cnblogs.com/lingqinyu/p/8877759.html
Copyright © 2020-2023  润新知