在具体分析某一种流的前要先知道下面一些信息:
4个抽象类也是流的4个超类,其它所有的相关类都是继承这几个类
字节
InputStream , OutputStream
字符
Reader , Writer
除了知道这几个超类外还需要只要流相关的几个重要的接口
Flushable 提供将缓存中数据写入底层流,是输出流的重要部分
Readable 是reader 要实现的接口
在弄清楚上面这些,再去看流就会清晰了很多,无论是字节的输入输出,还是字符的输入输出,还是字接的输入与字符的输入。。。等等都有很多相似度。
从宏观角度,一个是以字节的形式进行信息的传输,一个是以字符的形式进行信息传输,都有输入输出功能。
第一:字节流
1,输入流
在这里有3个重要的InputStream 实现类,这3个也是大家经常用到的
1, FileInputStream 文件输入流,它是直接继承InputStream 的。
2, FilterInputStream 过滤流,它也直接继承了InputStream ,这个流大家似乎有些陌生,但是它的2个子类大家一定非常熟悉
<1>BufferedInputStream 缓存流,把拿到的数据先存到缓存中,最后在一起提交,提高效率
<2>DataInputStream 从最底层读取数据,也叫做二进制流
2,输入流也有3个重要的实现类,跟上面的类似
第二:字符流
1,输入流
Reader 实现Readerable接口
它是以字符的形式写入数据,重要的2个实现类是
1,FileReader (继承InputStreamReader[该类又继承了Reader])
2, BufferedReader 直接继承了Reader
2, 输出流 跟输入流类似,把Reader改为Writer即可
对于上面2点,我没有写的非常详细,是因为他们之间大部分都是一样的,只是个别地方出现一点差异,最重要的就是File,Buffered,Data这些字样,
由于读取数据的方式有很多种,需要根据不同的条件来进行筛选,如果需要读取的是一些不含中文的一些字母,数量不多就可以用不同的输入输出字节流,
如果需要从文件中读取,或者写到文件中就需要文件流,当读取的数量较大的时候就需要用缓存流,字符流比较适合最小单位是字符的数据存储方式的数据。
我用一个测试类来写下上面几个常用流。
public class BufferedTest {
public static void main(String[] args) {
BufferedTest test=new BufferedTest();
test.test1();
test.test2();
}
//test1 BufferedInputStream and BufferedOutputStream
public void test1(){
try {
InputStream in=new FileInputStream(new File("d:/intStream.txt"));
byte [] b=new byte[100];
BufferedInputStream bi=new BufferedInputStream(in);
bi.read(b);
OutputStream out=new FileOutputStream(new File("d:/outStream.txt"));
BufferedOutputStream bo=new BufferedOutputStream(out);
bo.write(b);
//将缓存中数据写如文件
bo.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//test2 BufferedReader and BufferedWriter
public void test2(){
try {
Reader reader=new FileReader(new File("d:/reader.txt"));
BufferedReader br=new BufferedReader(reader);
char a[]=new char[100];
br.read(a);
FileWriter fw=new FileWriter(new File("d:/writer.txt"));
BufferedWriter bw=new BufferedWriter(fw);
bw.write(a);
//将缓存中数据写如文件
bw.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
《Java I/O, 2nd Edition》是一本深入探讨Java输入/输出系统的重要书籍,针对Java平台的I/O系统提供了全面且深入的指南。这本书在第二版中对Java I/O进行了更新,涵盖了从Java 5到Java 8的最新发展,包括NIO.2(New ...
这是一个关于Java I/O的知识点总结,希望大家共同学习,共同进步
Java I/O类库是Java平台的核心部分,它提供了丰富的类用于处理输入和输出操作。这个系统包括了多种类,从简单的字节流到复杂的字符流,以及一系列的装饰器类,用于扩展和增强原始流的功能。 Java 1.0 和 1.1 中的I/...
Java I/O, NIO, 和 NIO.2 是Java平台中处理输入/输出操作的核心组件,对于任何Java开发者来说,理解和掌握这些概念至关重要。本文将深入探讨这些技术,旨在提供一个全面而详尽的概述。 Java I/O(Input/Output)是...
Java I/O 编程是Java开发中的重要组成部分,主要用于处理数据的输入与输出。下面将详细阐述其中的关键概念和方法。 1. 数据流的概念及输入输出方法: 数据流是计算机中进行数据传输的通道,包括从外部设备到程序的...
在Java编程语言中,输入/输出(I/O)是处理数据传输的核心部分。过滤流(Filter Stream)是Java I/O框架中的一个重要概念,它提供了一种优雅的方式来进行数据的读写操作,同时允许我们添加额外的功能,如字符编码...
Java I/O 流代码实例大全(01~09) File、FileInputStream、FileOutputStream、FileReader、FileWriter、BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter
OReilly.Java.I.O.2nd.Edition.May.2006 Java的io包主要包括: 1. 两种流:字节流(byte Stream)和字符流(character stream),这两种流不存在所谓的谁代替谁、谁比谁高级之说,它们互为补充,只是侧重点不同...
Java I/O(输入/输出)系统是Java编程语言中用于处理数据流的重要组成部分,它允许程序与外部资源如文件、网络、硬件设备等进行交互。深入理解Java I/O的工作机制对于开发高效、可靠的系统至关重要。以下是对Java I/...
Java I/O系统是Java编程语言中的一个重要组成部分,它允许程序进行输入输出操作,与外部世界进行数据交互。在Java中,I/O系统基于流的概念,流可以被视为数据的流动渠道,既可以用来读取数据(输入流),也可以写入...
Java 新I/O,也称为NIO(New Input/Output),是Java平台中对传统I/O模型的一种改进。在Java 1.4版本中引入的NIO库为开发人员提供了更高效、非阻塞的数据处理方式,特别适用于高并发、低延迟的系统。NIO的核心在于...
Java I/O层次结构详解 Java I/O系统是Java平台中不可或缺的一部分,它为开发者提供了处理输入和输出的强大工具。在Java中,I/O操作主要基于流(Stream)的概念,流可以被视为数据的有序序列,既可以代表从源读取...
Java I/O流通讯录是一个基于Java编程语言设计的实用程序,它主要用于演示和学习Java的I/O流操作。在这个项目中,开发者通过I/O流实现了对文件的读写功能,从而构建了一个简单的通讯录系统。这个系统允许用户进行添加...
Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上运行...
### Java I/O总结 #### 一、从`new BufferedReader(new InputStreamReader(conn.getInputStream()))`想到的 在Java编程中,处理输入输出(I/O)是一项常见的任务。这段代码`new BufferedReader(new ...
Java I/O(输入/输出)是Java编程语言中不可或缺的一部分,它允许程序与外部资源进行数据交换,如文件、网络连接、系统硬件等。在Java I/O中,我们使用流(Stream)的概念来处理数据,流是数据传输的通道。本套习题...
java I/o java I/o 详细介绍课件
Java I/O 文件操作是Java编程中的重要组成部分,它允许开发者处理输入和输出,涉及文件的创建、读取、写入、删除以及复制等任务。在Java中,这些操作主要是通过java.io包提供的类来实现的。下面将详细介绍这些知识点...
Java I/O系统是Java编程语言中的一个核心组成部分,它提供了处理输入输出操作的类和接口。这个系统的设计目的是为了使得应用程序能够与外部世界交互,包括读取和写入文件、网络数据、标准输入输出流等。在Java中,I/...
MaglevIO是一个专注于提供易用性和高性能的Java I/O库,其设计灵感来源于Java的非阻塞I/O(Non-blocking I/O,NIO)框架。NIO是Java平台中一个重要的部分,它允许程序在处理大量并发连接时显著提高效率,尤其是在...