`

Java基础I/O流类型

    博客分类:
  • Java
阅读更多

 

Java把不同的数据源与程序间的数据传输都抽象为“流”,以实现相对统一而简单的输入/输出(I/O,Input/Output)操作方式。

I/O流的分类有多种方式:

  •     按照数据流动的方向,可以分为输入流(InputStream)和输出流(OutputStream)。   

         输入流只能从中读取数据,而不能向其写出数据;而输出流则只能向其写出数据,而不 能从中读取数据。这里是站在程序的角度来确定出入方向,即将数据从程序外部传

         送到程序中谓之“输入”数据。反之,为输出。

  • 根据数据流所关联的是数据源还是其他数据流,可以分为节点流(Node Stream)和处理流(Processing Stream)。

        节点流直接与数据源连接,处理流不直接连到数据源。

  • 按照传输数据的“颗粒大小”划分,可分为字符流(Character Stream)和字节流(Byte Stream)。

           凡是以InputStream和OutputStream结尾的类型均为字节流,凡是以Reader和Writer结尾的均为字符流

 

 基础I/O流类型

  • InputStream

       抽象类java.io.InputStream是所有字节输入流类型的父类,该类中定义了以字节为单位读取数据的基本方法,并在其子类进行了分化和实现。

InputStream类中定义的方法包括

public abstract int read()
从此输入流中读下一个字节。字节值被转换为0-255之间的一个(无符号)整数返回,到达流的结尾无字节可读时将返回-1。
public int read(byte[] b)
从此输入流中读取一定数目的字节并存入缓冲数组b。实际读取的字节数被作为一个整数返回,到达流的结尾无字节时将返回-1。
public int read(byte[],int off, int len)
从此输入流中读取最多len个字节的数据到一个字节数组。它将尽可能去读取len个字节的数据,但可能只读取到较少数目的字节,实际读取的字节数被作为一个整数返回,到达流的结尾无字节可读时将返回-1。
public void close()
关闭此输入流并释放任何与这个流相关联的系统资源。
public int available()
返回此后从此输入流中还可以无阻塞地读取(或跳过)的字节数。
public long skip(long n)
跳过并丢弃输入流中的n个字节数据。
public boolean markSupported()
测试此输入流是否支持mark()和reset()方法。InputStream类的markSupported方法返回false,在其子类中产生了分化。
public synchronized void mark(int readlimit)
标记此输入流中的当前位置。随后调用reset()方法时,将把这个流重置于最后一次标记的位置,从而使随后的读取重读同样的字节。参数readlimit指明输入流在标记位置失效前允许读多少字节。
public synchronized void reset()
将此输入流重置于上一次在这个输入流上调用mark()方法时的位置。

  •   OutputStream

      java.io.OutputStream与java.io.InputStream是对应,是所有字节输出流类型的抽象父类。  

public abstract write(int b)
将b的二进制表示值低8位组成一个字节,写出到此输出流。
public void write(byte b[])
将字节数组b中的全部b.length个字节一次写出到此输出流。
public void write(byte b[],int off,int len)
将字节数组b中下表off开始的len个字节写入到此输出流。
public void close()
关闭此输入流并释放任何与之相关联的系统资源。
public void flush()
清空此输出流,即将任何被缓冲输出的字节立即发送到输出流中。
  •   Reader

 抽象类java.io.Reader是所有字符输入流的父类,其中声明了用于读取字符流的有关方法。

Reader 类中定义的方法有:
public int read()
从此输入流中读取一个字符,并转换为0-65535范围的整数返回,到达流的结尾时返回-1。
public int read(char cbuf[])
将字符读入数组cbuf,并返回实际读取的字符数,到达流的结尾时返回-1。
public int read(char cbuf[],int off,int len)
将字符读入数组cbuf中从off开始的空间,每次最多读len个字符,返回实际读取的字符数,到达流的结尾时返回-1。
public boolean ready()
判断此流是否准备好,如是,则可以进行读操作。
还有一些与InputStream类相似的。
public abstract void close();
public long skip(long n)
public boolean markSupported();
 
  • Writer

       java.io.Writer与java.io.Reader类对应,是所有字符输出流类型的共同父类,也是一个抽象类,其中声明的方法如下:

 Writer类中定义的主要方法有:  
 public void write(int c)  
 截取参数c二进制形式的低16位组成一个字符,并将其写出到当前对象所关联的数据源中。  
 public void write(char cbuf[])  
 将数组cbuf中的字符依次写出。  
 public void write(char cbuf,int off, int len)  
 将数组cbuf中下标off开始的len个字符写出。  
 public void write(String str)  
 将字符串str中的全部字符依次写出。  
 public void write(String str,int off,int len)  
 将字符串str中下标off开始的len个字符写出。  
 public abstract void close()  
 关闭此输出流并释放任何与之相联系的系统资源。  
 public abstract void flush()  
 清空此输出流,即将任何被缓冲输出的字符立即发送到输出流中。  
 public void mark(int readAheadLimit)   
 public void reset()  
 

 

 

 

 

 

分享到:
评论

相关推荐

    java基础之I/O流

    Java中的I/O流是程序与外部数据交互的重要机制,它允许数据在程序、文件、网络等之间流动。I/O流分为两大类:字符流(Character Stream)和字节流(Byte Stream),每类又分为输入流(Input Stream)和输出流...

    Java 新I/O

    Java 新I/O,也称为NIO(New Input/Output),是Java平台中对传统I/O模型的一种改进。在Java 1.4版本中引入的NIO库为开发人员提供了更高效、非阻塞的数据处理方式,特别适用于高并发、低延迟的系统。NIO的核心在于...

    Java I/O 过滤流-带格式的读写操作

    总之,Java I/O中的过滤流是构建复杂I/O操作的基础,它们允许开发者在不改变原有流的基础上添加新的功能,提高了代码的复用性和灵活性。通过深入学习和实践,开发者可以更好地应对各种I/O需求,实现高效的数据处理。

    Java I/O编程 java

    在Java I/O编程中,理解不同类型的流及其用途至关重要。字节流和字符流分别处理二进制和文本数据,过滤流提供了额外的功能,管道流实现了线程间的通信,对象流使得对象可以持久化。掌握这些基础,开发者能够有效地...

    java_I/O流的教程

    Java I/O流是Java编程语言中的一个重要组成部分,用于在程序和外部资源(如磁盘、网络、内存等)之间传输数据。本教程涵盖了从基础到高级的Java流知识,包括文件读写、缓冲流、对象序列化等多个方面。 1. **文件的...

    java I/O类的使用

    Java 1.0 和 1.1 中的I/O类主要是基于两个基础类:`InputStream`和`OutputStream`,它们处理字节流。`InputStream`家族包括了如`ByteArrayInputStream`、`FileInputStream`等,它们分别从字节数组或文件中读取数据。...

    怎么使用I/O编程???

    总的来说,Java的I/O编程模型通过流的概念提供了一种灵活且易于使用的接口,允许开发者处理各种类型的数据源,同时隐藏了数据转换的复杂性。理解和掌握I/O编程,对任何Java开发者来说都是至关重要的。

    Javaio流思维导图

    I/O流系统提供了一种标准化的方式来读取、写入数据,无论是从磁盘、网络、内存还是其他类型的输入输出设备。在这个思维导图中,我们将深入探讨Java I/O流的各个方面。 首先,Java I/O流分为两大类:字符流和字节流...

    java中I/O的t经典ppt

    - Java I/O流支持级联,即一个流可以连接到另一个流上,形成流链。这样可以组合不同类型的流以实现复杂的数据处理逻辑。 8. **对象序列化与反序列化**: - Java提供了ObjectOutputStream和ObjectInputStream,...

    Java I/O系统

    首先,Java I/O系统的基础是`java.io`包,它提供了许多用于处理不同类型的流的类。这些流分为字符流和字节流两大类。字符流处理的是Unicode字符,适用于文本数据,主要包括`Reader`和`Writer`抽象类以及它们的子类,...

    Java课程设计报告书-学生版-1_I/O流与文件课程设计_

    Java的I/O流系统是基于面向对象的设计,提供了一种统一的方式来处理不同类型的输入和输出源。它将数据的流动抽象为流,流可以是来自键盘、磁盘文件、网络连接等的数据源或目标。I/O流分为字符流和字节流两大类,分别...

    Java I/O层次结构详解

    - **流(Stream)**:Java I/O中的流分为字节流(Byte Stream)和字符流(Character Stream)。字节流处理单个字节的数据,如InputStream和OutputStream家族;字符流处理Unicode字符,如Reader和Writer家族。 - **...

    Java I/O详细笔记

    Java的I/O流体系结构基于一系列抽象基类,通过继承这些基类实现具体的流操作。 **3.1 InputStream类层次** - `InputStream`:所有字节输入流的基类。 - `FileInputStream`:从文件系统中的文件中获取输入。 - `...

    java基础知识I/O流使用详解

    Java中的I/O流是编程中不可或缺的一部分,它允许程序与外部世界进行数据交换,无论是读取文件、网络通信还是处理标准输入输出。本篇将详细讲解Java中的I/O流系统,帮助你理解其基本概念、分类以及常用类的使用。 ...

    Java I/O总结

    1. **流的层次结构**:Java I/O流按照功能的不同分为基本流和高级流。基本流如`FileInputStream`、`FileOutputStream`等,主要用于直接与设备交互;高级流如`BufferedReader`、`PrintWriter`等,则是在基本流的基础...

    I/O流相关知识

    I/O流提供了读取和写入数据的机制,使得程序能够处理各种类型的输入和输出。在给定的代码片段中,我们看到一个简单的例子,它使用了字符输入流来读取用户输入的10个字符。下面将详细介绍这个示例中的关键知识点: 1...

    JavaIO 2nd Edition PDF

    Java的I/O设施是基于流的概念构建的,流提供了一种简单的方法来读写不同类型的数据。Java提供了多种流,每种都有其特定的应用场景。流世界大致可以分为四大类:输入流和输出流,用于读写二进制数据;以及读取器和...

    Java I/O 使用和最佳实践

    Java I/O系统是Java编程语言中的一个核心组成部分,它提供了处理输入输出操作的类和接口。这个系统的设计目的是为了使得应用程序能够与外部世界交互,包括读取和写入文件、网络数据、标准输入输出流等。在Java中,I/...

    Java输入与输出(I、O).

    字节流是Java I/O的基础,分为输入流(InputStream)和输出流(OutputStream)。InputStream处理数据的输入,OutputStream处理数据的输出。它们都定义了读写数据的基本方法,如read()和write()。常用的子类有...

    accii码表(包括扩展)以及Java I/O

    Java I/O系统还包含过滤流(Filter Stream)、对象流(Object Stream)以及管道流(Piped Stream)等,它们提供了更高级的功能,如数据压缩、错误检测和校验、对象序列化等。了解并熟练掌握这些概念对于任何Java...

Global site tag (gtag.js) - Google Analytics