• IO流之转换流


    1.转换流的意义

    由于某些电脑的系统默认编码与文本文档或有需求时的编码不同时,这是就要用到转换流来进行编码集的转换。

    2.OutputStreamWriter类

    首先我们看到Writer结尾,那肯定是字符类的,我们再看构造方法,他还是不能自己确定目的地。

    实际操作

     1 public class demo01 {
     2     public static void main(String[] args) throws IOException {
     3         //明确目的地
     4         FileOutputStream fos = 
     5                 new FileOutputStream("D:\io0429\utf8.txt");
     6         //添加转换流
     7         OutputStreamWriter osw = new OutputStreamWriter(fos,"utf-8");
     8         //写入字符
     9         osw.write("你好");
    10         //释放资源
    11         osw.close();
    12     }
    13 }

    3.InputStreamReader

    构造方法相同

    注意:在读取指定的编码的文件时,一定要指定编码格式,否则就会发生解码错误,而发生乱码现象。

    实际操作

     1 public class demo02 {
     2     public static void main(String[] args) throws IOException {
     3         //明确数据源
     4         FileInputStream fis = new FileInputStream("D:\io0429\utf8.txt");
     5         //添加转换流
     6         InputStreamReader isr = new InputStreamReader(fis,"utf-8");
     7         int len = 0;
     8         while((len = isr.read()) != -1){
     9             System.out.println((char)len);
    10         }
    11         //释放资源
    12         isr.close();
    13     }
    14 }

    4.流的操作规律

    第一点:要操作的是数据源还是目的地

    源:InputStream Reader; 目的地: OutputStream Writer;

    第二点:要操作的数据是字节还是文本

    字节:InputStream OutPutStream; 文本:Writer Reader;

    第三点:明确数据所在的具体位置

    源设备:

               硬盘:文件  File开头。

               内存:数组,字符串。

               键盘:System.in;

               网络:Socket

    目的设备:

               硬盘:文件  File开头。

               内存:数组,字符串。

               屏幕:System.out

               网络:Socket

    第四点:是否需要额外功能

    转换流。InputStreamReader OutputStreamWriter

    缓冲区对象。BufferedOutputStream BufferedInputStream BufferedWriter BufferedReader

  • 相关阅读:
    CentOS7.4 + Ambari 2.6.1.5 + HDP 2.6.4.0 安装部署
    分布式业务的异常解决思路
    RPC簡介
    网络I/O模型--07Netty基础
    网络I/O模型--06异步I/O
    网络I/O模型--05多路复用I/O
    网络I/O模型--04非阻塞模式(解除accept()、 read()方法阻塞)的基础上加入多线程技术
    网络I/O模型--03非阻塞模式(ServerSocket与Socket的超时处理)--解除accept()、 read()方法阻塞
    网络I/O模型--02阻塞模式(多线程)
    Android开发(五)——计时器
  • 原文地址:https://www.cnblogs.com/shenhx666/p/15062200.html
Copyright © 2020-2023  润新知