zoukankan      html  css  js  c++  java
  • java 核心编程——IO流之字符流和字节流相互转换(四)

    1.为什么字符流和字节流需要转换?

      这是因为有一些时候系统给你提供的只有字节流,比如说System.in标准输入流。就是字节流。你想从他那里得到用户在键盘上的输入,只能是以转换流将它转换为Reader以方便自己的程序读取输入。再比如说Socket里的getInputStream()很明显只给你提供字节流,你要不行直接用,就得给他套个InputStreamReader()用来读取。网络传输来的字符。

    2.字节流和字符流怎么转换?

      2.1.字节流转换为字符流:InputStreamReader

      2.2.字符输流转换为字节流:InputStreamWriter

    3.具体应用

      3.1 字节流转换为字符流

    package se.io;
    
    import java.io.*;
    
    public class InputStreamReaderTest {
    
        public static void main(String[] args) {
    
            try {
                //构建字节输入流对象
                FileInputStream fileInputStream = new FileInputStream("E:\test\data3.txt");
    
                //构建字节字符转换流对象
                InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
    
                //构建字符输入流对象
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
    
                //读取数据
                char[] chars = new char[1024];
                int off = 0;
                while(bufferedReader.ready()){
                    off = bufferedReader.read(chars);
    
                }
    
                //打印输出
                String s = new String(chars,0,off);
                System.out.println(s);
    
                //关闭流
                bufferedReader.close();
                inputStreamReader.close();
                fileInputStream.close();
    
    
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
    
        }
    }

      3.2字符流转换为字节流

    package se.io;
    
    import java.io.*;
    
    public class OutPutStreamWriterTest {
    
    
        public static void main(String[] args) {
    
            try {
                //构建输出流字节对象
                FileOutputStream fileOutputStream = new FileOutputStream("E:\test\data4.txt");
                //构建输出流字节字符转换对象
                OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);
                //构建字符输出流对象
                BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
    
                //构建数据
                char[] chars = new char[3];
                chars[0] = 'a';
                chars[1] = 'b';
                chars[2] = '中';
    
                //输出数据
                bufferedWriter.write(chars);
    
                //关闭流
                bufferedWriter.close();
                outputStreamWriter.close();
                fileOutputStream.close();
    
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    }
  • 相关阅读:
    C++笔记(2018/2/6)
    2017级面向对象程序设计寒假作业1
    谁是你的潜在朋友
    A1095 Cars on Campus (30)(30 分)
    A1083 List Grades (25)(25 分)
    A1075 PAT Judge (25)(25 分)
    A1012 The Best Rank (25)(25 分)
    1009 说反话 (20)(20 分)
    A1055 The World's Richest(25 分)
    A1025 PAT Ranking (25)(25 分)
  • 原文地址:https://www.cnblogs.com/wwyx-xi/p/7514196.html
Copyright © 2011-2022 走看看