• 在使用IO流时该选择何种流对象


    在使用IO流时该选择何种对象是很多人的一个问题。一下通过一个判断顺序和案例来回答这个问题

    一:先介绍简单介绍一下流

         流可以分为字符流和字节流两种类型

      字节流对应InputSteam(输入流)和OutStream(输出流)。

      字符流对应Reader(输入流)和Writer(输出流)。

    二:现在介绍选择规则

      (1)通过设备输入流

        若输入流是字节则选择InputStream。

        若输入流是纯文本则选择Reader。

      (2)通过设备判断输出流

        若输出流是字节,则选择outputstream。

        若输出流是纯文本,则选择Writer。

    三:现在运用一个例子来表现上面的规则

      需求:将一个文本文件的内容通过控制台打印出来。

      1.文本文件是一个纯文本文件

       所以输入流是Reader

       在Reader中操作文件的类是FileReader

       所以FileReader fd = new FileReader("123.txt");

       若要提高读取效率,则使用缓冲区

       所以BufferedReader brd = new BufferedReader(reader);

          2.以为读取的是纯文本,所以输出流使用Writer

         而控制台的输出System.out是一个字节流

       所以需要把字符流装换为字节流进行输出

       所以选择转换流 OutputStreamWriter

       OutputStreamWriter  out = new OutputStreamWriter(System.in);

       若要提高效率,则使用BufferedWriter

       所以:BufferedWriter brw = new BufferedWriter(out);

    以下是代码示例

     1 package com.sjj.io;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.BufferedWriter;
     5 import java.io.FileReader;
     6 import java.io.IOException;
     7 import java.io.OutputStreamWriter;
     8 
     9 public class Test01 {
    10 
    11     
    12     public static void main(String[] args){
    13         BufferedReader brd = null;
    14         BufferedWriter brw = null;
    15         try {
    16             brd = new BufferedReader(new FileReader("d:\fileIo.txt"));
    17             brw = new BufferedWriter(new OutputStreamWriter(System.out));
    18             String str = null;
    19             while((str = brd.readLine()) != null){
    20                 brw.write(str);
    21                 brw.newLine();
    22                 brw.flush();
    23             }
    24         } catch (IOException e) {
    25             // TODO Auto-generated catch block
    26             e.printStackTrace();
    27         }finally{
    28             if (brd != null) {
    29                 try {
    30                     brd.close();
    31                 } catch (IOException e) {
    32                     // TODO Auto-generated catch block
    33                     e.printStackTrace();
    34                 }
    35             }
    36             if (brd != null) {
    37                 try {
    38                     brw.close();
    39                 } catch (IOException e) {
    40                     // TODO Auto-generated catch block
    41                     e.printStackTrace();
    42                 }
    43             }
    44         }
    45         
    46     }
    47 
    48 }
    View Code
  • 相关阅读:
    服务端渲染和客户端渲染
    node(基础)_node.js中的http服务以及模板引擎的渲染
    node基础(二)_模块以及处理乱码问题
    node(基础)_node中的javascript
    vue购物车和地址选配(三)
    nyoj 169 素数
    nyoj 205 求余数
    nyoj 65另一种阶乘问题
    nyoj 734奇数阶魔方
    nyoj64 鸡兔同笼
  • 原文地址:https://www.cnblogs.com/Jhope/p/5203627.html
Copyright © 2020-2023  润新知