初级 Java I/O 综述(三)

原创 2004年01月14日 11:11:00

抽象类ReaderWriter定义了实用的方法,其中最主要的是read()和

write()。这两个方法在ReaderWriter中声明为抽象方法,由子流类overwrite实现。

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

   下面还是简单介绍一下字符流中,继承ReaderWirter的主要子流类。

字符流类

功能简单介绍

Reader

抽象类,描述字符流的输入

Writer

抽象类,描述字符流的输入

StingReader

从字符串读取的输入流

StringWriter

写入字符串的输出流

FileReader

从文件读入的输入流

FileWriter

写入文件的输出流

PrintWriter

包含最常见的Print()和Println()的输出流

PushbackReader

返回一个字符到输入流,主要用于编译器的实现

PipedReader

输出管道

PipedWriter

输入管道

CharArrayReader

从字符数组读取的输入流

CharArrayWriter

写入字符数组的输出流

BufferReader

缓冲输入流

BufferWriter

缓冲输出流

FilterReader

实现了InputStream Interface

FilterWriter

实现了OutputStream Interface

InputStreamReader

将字节转换为字符的输入流

OutputStreamWriter

将字节转换为字符的输出流

 

对比两个表,你是否有什么发现?~~

^_^,是不是很多的类名和作用都差不多,没错!这些方法的不同之处仅仅在于一个是针对字节的,一个是针对字符的。

 

简单了解了流的概念和两种流的各种子类。下面我们通过一些简单的程序来实现上面的东西,毕竟例子才是组好理解的东西。

1:读取控制台的输入。。。。。。

具体的语句如下:

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

下面将这条语句分块解释一下:

System.in――》读取控制台的数据,他读取的是字节流。

InputStreamReader――》它的作用是将字节流转换为字符流。它的构造函数为:

                      InputStreamReaderInputStream inputStream

BufferedReader――》将输入流缓冲处理,可以提高处理效率。

上面的语句也可以写成下面的形式更容易理解。。

       InputStreamReader ins = new InputStreamReader(System.in);

       BufferedReader br = new BufferedReader(ins);

2:控制台输出。。。。。。。。。。。。。

控制台输出可以使用print()和println(),这个方法很容易使用。其他可以使用

write()方法来实现输出。它的构造函数为:

                void write(int byteval)

 

下面是一个例子程序:

    class writeExample

{

   public static void main(String args[])

{

   int n;

   a = ‘a’;

   System.out.write(a);    

   System.out.write(‘/n’);

}

}

3:读取字符。。。。。。。。。。。。。。。。。。

使用前面的BufferedReader定义的一个方法read()来读入的返回值为int,所以为了返回一个char,要进行转换。Read()的构造函数:

   int  read() throws IOException

具体程序如下:

 import java.io.*;

 class readExample

{

     public static void main(String args[]) throws IOException

      {

         char a;

         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

         System.out.println(“Enter q to quit.”);

         a= (char) br.read();       //从输入流中读出存入(char a

         If(a != ‘q’)

           System.out.println(a);

      }

   }

 

4:读取字符串。。。。。。。。。。。。。。。。。。。。。

   使用函数:readLine() 它的常用形式为:

         String readLine() throws IOException

   import java.io.*

   class readLineException

{

  public static void main(String args[]) throws IOException

{

    String str;

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    System.out.println(“Enter a string line, q to quit.”);

    Str = b.readLine();

    If(str != q)

      System.out.println(str);

}

}

 

5:关于文件的读写。。。。。。。。。。。。。。。。。。。。。。。。。。

Java提供了对文件的读写,但是有一点要注意的是:所有的文件都是面向字节的。但是Java允许我们在基于字符的对象来包装面向字节的文件。

两个对文件的操作的流类是:FileInputStreamFileOutputStream。这两个类的构造函数为:

  FileInputStreamString filenamethrows FileNotFoundExcepiont

  FileOutPutStreamString filenamethrows FileNotFoundException

此两个类定义了几个使用的函数:

    在对文件操作完之后,要使用close()方法关闭文件。    

void close() throws IOException

 

        用于读取一个文件,要使用read()读出的是字节流,如果读到文件的末尾

read()会返回 1

int read() throws IOException

 

        用于写入一个文件,使用write()来将字节流写入要求的文件中,此方法将参数写入到要求的文件中,但是要注意只有低8个字节才能写入文件。下面是一个例子程序:

 

import java.io.*;

class copyFile

{

  public static void main(String args[]) throws IOException

  {

    int n;

    FileInputStream fin;

    FileOutputStream fout;

    try

    {

      try

      {

        fin = new FileInputStream(args[0]);

      }

      catch(FileNotFoundException e)

      {

        System.err.println(e);

        return;

      }

 

      try

      {

        fout = new FileOutputStream(args[1]);

      }

      catch(FileNotFoundException e)

      {

        System.err.println(e);

        return ;

      }

    }

    catch(ArrayInedxOutBoundsException e)

    {

      System.err.println(e);

      return ;

    }

 

    try

    {

      do

      {

        n = fin.read();

        if( n != -1)

          fout.write(n);

      }

      while(n != -1);

    }

    catch(IOException e)

    {

      System.err.println(e);

    }

    fin.close();

    fout.close();

  }

 }     

    

《JAVA I/O最详解》

刚开始学Java时候,一直搞不懂Java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂。而且没有结合到java7 的最新技术,所以自己结合API来整理一下,有错的话请指正,...
  • self_realian
  • self_realian
  • 2016年07月19日 17:31
  • 1789

深入理解 java I/O

Java 的 I/O 类库的基本架构 I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道。在当今这个数据大爆炸...
  • Mr_Tim
  • Mr_Tim
  • 2016年04月06日 11:42
  • 841

Java I/O 模型的演进

什么是同步?什么是异步?阻塞和非阻塞又有什么区别?本文先从 Unix 的 I/O 模型讲起,介绍了5种常见的 I/O 模型。而后再引出 Java 的 I/O 模型的演进过程,并用实例说明如何选择合适的...
  • kkkloveyou
  • kkkloveyou
  • 2016年03月01日 21:17
  • 1448

Java I/O 流详解

原文地址: http://blog.csdn.net/jiangwei0910410003/article/details/22376895 摘要: Java 流在处理上分为字符流和...
  • jason_rainbow
  • jason_rainbow
  • 2016年03月17日 11:40
  • 407

Java I/O学习(附实例和详解)

原文地址:http://blog.csdn.net/u013142781/article/details/50814649 一、Java I/O类结构以及流的基本概念 在阅读Java I/O的...
  • tuzongxun
  • tuzongxun
  • 2016年03月08日 18:10
  • 709

Java异常处理和I/O处理

1.Java核心包: java.lang,java.awt,java.applet,java.io,java.util 其他:java.net,java.math,java.rmi,java....
  • u010941185
  • u010941185
  • 2016年04月09日 17:17
  • 331

Java I/O工作机制

深入理解Java 字节I/O,字符I/O,字节流于字符流的区别,阻塞I/O的缺点,非阻塞I/O(NIO)工作机制...
  • sunxianghuang
  • sunxianghuang
  • 2016年08月19日 19:40
  • 2056

Java中的I/O流复习

1 流概述 流是一组有序的数据序列,根据操作的类型,可分为输入流和输出流两种。I/O(Input/Output)流提供了一条通道程序,可以使用这条通道把源中的字节序列送到目的地。Java中的I/O类都...
  • shangwei1991
  • shangwei1991
  • 2015年11月23日 20:55
  • 997

设计模式学习笔记--设计模式在Java I/O中的应用(装饰模式和适配器模式)

在Java 语言I/O库的设计中,使用了两个结构模式,即装饰模式和适配器模式。本篇围绕这两个模式讨论Java I/O库的设计。...
  • puma_dong
  • puma_dong
  • 2014年04月06日 17:43
  • 3732

Java I/O流系统学习心得

1.Java I/O系统概论 由于数据输入和接受端的多样性以及与他们通信方式的多样性(你可能需要按字节,按字符,顺序或随机地获得它们)存在,一个优秀的I/O系统对每门语言来说都是一个巨大挑战。Java...
  • linmoops
  • linmoops
  • 2016年07月29日 16:18
  • 354
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:初级 Java I/O 综述(三)
举报原因:
原因补充:

(最多只允许输入30个字)