zoukankan      html  css  js  c++  java
  • 在使用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
  • 相关阅读:
    Azure PowerShell (7) 使用CSV文件批量设置Virtual Machine Endpoint
    Windows Azure Cloud Service (39) 如何将现有Web应用迁移到Azure PaaS平台
    Azure China (7) 使用WebMetrix将Web Site发布至Azure China
    Microsoft Azure News(4) Azure新D系列虚拟机上线
    Windows Azure Cloud Service (38) 微软IaaS与PaaS比较
    Windows Azure Cloud Service (37) 浅谈Cloud Service
    Azure PowerShell (6) 设置单个Virtual Machine Endpoint
    Azure PowerShell (5) 使用Azure PowerShell创建简单的Azure虚拟机和Linux虚拟机
    功能代码(1)---通过Jquery来处理复选框
    案例1.用Ajax实现用户名的校验
  • 原文地址:https://www.cnblogs.com/Jhope/p/5203627.html
Copyright © 2011-2022 走看看