Java细分IO包输入输出流类差别

发表于:2010-6-13 10:32

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

#
java
#
Java

  FILE文件源处理类

  FileReader 是读入文本字符文件数据源的类接口。此类管道内包含字节流InputStream管道接口。

  FileInputStream 可以读入文本字符文件数据源,也可以读入ASCII码等非文本文件数据源的类接口。

  结论:字符流是在字节流基础上的处理流。那么,字节流功能更广泛。字符流无法正确处理例如ASCII的文件数据源。

  另外如果都处理文本文件源,如何选择这2个类,使用何种类比较好?就要具体看你实现什么样的功能,分析它们各自不同的方法来决定了。也许一样,也许不同。各自处理的速度和内存使用情况,就要使用一些优化软件来具体分析了。例如:简单软件OptemizeIt, 或Jprobe功能更强的程序优化软件

  --------测试FileReader类,阅读可执行ASCII文件--------------

import java.io.*;
public class TestFileReader{
public static void main(String[] args)throws IOException{
  String st = "appletviewer.exe";
  File f = new File(st);
  FileReader freader = new FileReader(f);
  FileWriter fwriter = new FileWriter("new"+f.getName());
  int in = -1;
  int flag = 0;
  in = (char)freader.read();
  flag++;
  System.out.println("my first char reading is :--"+(char)in);
  // fwriter.write(in);
    while(in!=-1){
      fwriter.write(in);
      in = freader.read();
      flag++;
      System.out.println("my loop char reading is:--"+(char)in);
    }
  System.out.println("the reading flag is:--"+flag);
  fwriter.flush();
  fwriter.close();
  freader.close();
  }
}

  --------测试FileInputStream类,阅读可执行ASCII文件--------------

import java.io.*;
public class TestFileInputStream{
  public static void main(String[] args)throws IOException{
    String st = "appletviewer.exe";
    File f = new File(st);
    FileInputStream fin   = new FileInputStream(f);
    FileOutputStream fout = new FileOutputStream("new"+f.getName());
    int in = -1;
    int flag = 0;
    in = fin.read();
    flag++;
    System.out.println("my first byte reading is:--"+(char)in);
      while(in!=-1){
        fout.write(in);
        in = fin.read();
        flag++;
        System.out.println("my loop byte reading is:--"+(char)in);
      }
    fout.flush();
    fin.close();
    fout.close();
    System.out.println("the reading flag is:--"+flag);
  }
}

  结果:

  FileReader类,读入ASCII可执行文件,然后复制,无法还原此文件,无法运行。

  FineInputStream类,读入ASCII可执行文件,然后复制,可以还原此文件,可运行。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号