`
白粥若水
  • 浏览: 103521 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

IO学习3rd——Stream"流"基础

阅读更多

到目前为止,我所学习的知识和写的小程序都只是帮助我实现我“自己”所要做的东西,那么怎样得到外部的信息,实现程序与外部文件之间的数据交互了?最近学的Stream“流”可以解决这个问题。

 

     "流"——Stream是IO类库中的一个抽象概念,它代表任何有能力产出数据的数据源对象或是有能力接收数据的数据端对象。"流"屏蔽了实际的IO设备中处理设备中处理数据的细节。

 

     在实际学习和使用"流"的过程中,尽量将其想象成一根管子,管子的一段接着程序(内存),而另一端接着所要处理的文件资源。

 

     流的分类:

                 J2SDK中的位于java.io包的流类型都分别继承了以下4个抽象类:InputSream,OutputStream,Writer,Reader

                 按流的方向的不同:分为输入流和输出流。注意,输入和输出都是站在程序的角度上说的,而不是站在文件的角度。InputSream和Reader都属于输入流,而OutputStream和Writer都属于输出流。任何自InputSream或Reader派生而来的类都含有名为read()的基本方法。同样,任何自OutputStream和Writer派生而来的类都含有名为write()的基本方法。

 

 

                 按处理数据的单位的不同:分为字符流和字节流。顾名思义,字符流和字节流处理数据的单位分别是字符(在java中是2个字节)和字节(8位0/1)。InputSream和OutputStream是字节流。Writer和Reader是字符流。

            

                 按功能的不同:分为节点流和处理流。节点流是最基本的流。与之对应,处理流是使用了装饰器(filter)模式的流,在我们编写程序的时候它给我们提供了相当大的灵活性(但,不可否认,同时也增加了代码的复杂性)。如:DataInputStream,BufferedInputStream,FileInputStream等等,相应的,还有DataOutputStream,BufferedOutputStream,FileOutputStream等等。

                                    处理流是一类特殊的流,它的构造器必须传入一个节点流或处理流。如下面的代码:

package file0313;

import java.io.*;

public class TestBufferedReader {
	public static String read(String fileName) throws IOException{
		//一行一行的读取数据
		BufferedReader in = new BufferedReader(new FileReader(fileName));
		String s;
		StringBuilder sb = new StringBuilder();
		while((s = in.readLine())!=null){
			sb.append(s+"\n");
		}
		in.close();
		return sb.toString();
	}
	
	
	public static void main(String[] args) throws IOException{
		System.out.println(read("src\\file0313\\TestBufferedReader.java"));

	}
	
	

}
/**
 *编译运行查看结果 
 *注意:文件读取完毕记得关闭:in.close();虽然,java垃圾处理器会在一段时间后将之回收
 *用readLine()读取文件内容时必须添加必要的换行符,因为该方法已经将之删除
 *
*/

                 当然,还有一类特殊的流——管道流:PipInputStream,PipOutputStream,PipReader,PipWriter,它们用于任务之间的信息交互,在多线程的应用中有巨大的作用。因为我还没有学习多线程,所以,我现在也不是太清楚。

0
0
分享到:
评论

相关推荐

    JAVA_IO操作总结——节点流和处理流.pdf

    ### JAVA IO操作总结——节点流和处理流 #### 一、概述 在Java中,输入/输出(Input/Output,简称IO)操作是一项非常重要的功能,它涉及到如何从不同的源读取数据以及如何向不同的目的地写入数据。Java IO体系主要...

    IO学习扩展——BMP图片的保存与读取基础

    有2个文件有main(),其中一个是多线程的一条线一条线的读取,另一个是一个点一个点的读取,比较慢 博文链接:https://263796001-qq-com.iteye.com/blog/991351

    IO-Link——智慧的通信技术.pdf

    "IO-Link——智慧的通信技术" IO-Link是一种智能的通信技术,主要应用于工业自动化领域。它是一种串行数字通信协议,用于与传感器和执行器进行通信。IO-Link技术可以简化工业控制领域的底层设备连接,提供大量的...

    Java-IO流/Stream流总结

    Java的IO流与Stream流是Java程序中处理输入输出的核心技术。IO流主要分为字节流和字符流,这两种流分别处理二进制数据(如图片、音频等)和文本数据(如ASCII、UTF-8编码的文本)。下面将详细阐述这两个流的分类、...

    java基础——IO流及File-RandomAccessFile对象.docx

    ### Java基础——IO流及File、RandomAccessFile对象 #### IO流概述 在Java中,IO流主要用于处理设备上的数据,这里的“流”可以被理解为数据的流动过程,即数据从一个地方移动到另一个地方的过程。Java中的IO流通过...

    JDK8新特性——Stream.pdf

    Stream的创建可以基于集合(如List、Set等)、数组和特定的IO资源(如Files)。 例如,在内容部分提供的代码中,创建了一个User实体类,并在Stream类中创建了一个用户列表。这个用户列表在后续的代码段中被用作流...

    JAVA学习笔记2020/4/27——Stream流、方法引用

    说到Stream便容易想到I/O Stream,而实际上,谁规定“流”就一定是“IO流”呢?在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。 1.1 引言 传统集合的...

    java——IO流技术.pdf

    在Java编程中,**IO流**(Input/Output Stream)主要用于实现数据的输入与输出操作。无论是文件读写、网络通信还是程序间的交互,几乎所有的数据交换都依赖于IO流。 ##### 1.1 流的概念 - **流**: 是一种数据传输的...

    java IO流学习笔记——(1)文件字节流

    java IO流学习笔记——(1) IO流总述 • 输入流:数据源到程序(InputStream、Reader读进来) • 输出流:程序到目的地(OutputStream、Writer写出去) 流分类 : • 节点流:可以直接从数据源或目的地读写数据 • 处理...

    python中的IO流(csdn)————程序.pdf

    在Python中,IO流(Input/Output Stream)是指进行数据输入和输出操作的过程,通常涉及内存与外部存储设备(如磁盘)之间的交互。这些操作是持久性的,意味着它们能够将数据保存在硬盘上,以便后续访问或处理。...

    stream-ruby, ruby 客户端生成活动使用 GetStream.io 提供&流.zip

    stream-ruby, ruby 客户端生成活动使用 GetStream.io 提供&流 流 ruby 是一款用于构建可以伸缩新闻发布和活动流的web服务的官方 ruby 客户端,它是流。注意,还有一个更高级的 Ruby on Rails - 流集成插件库,它将...

    IO流 javaio java 流

    Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又可以进一步细分为输入流(InputStream/Reader)和输出流(OutputStream/Writer)...

    IO流、Xml解析

    IO流还包括输入流(Input Stream)、输出流(Output Stream)、缓冲流(Buffered Stream)、转换流(Converter Stream)以及对象流(Object Stream)等子类,它们各自有不同的功能和应用场景。例如,FileInputStream...

    嵌入式实验2 单片机IO口——汽车灯光控制器

    总结起来,"嵌入式实验2 单片机IO口——汽车灯光控制器"是一个结合理论与实践的学习项目,旨在教会学生如何使用单片机的IO端口控制外部设备,特别是模拟汽车灯光的控制。通过这个实验,参与者不仅可以掌握单片机的...

    JAVA学习笔记————————

    6. **IO流**:JAVA的输入/输出流系统允许程序进行数据的读写,学习笔记会涵盖文件操作、网络通信中的数据传输,以及流的分类和使用。 7. **多线程**:JAVA提供了丰富的多线程支持,学习笔记会讲解线程的创建、同步...

    Java图书管理系统(IO流版)(csdn)————程序.pdf

    本文总结了Java图书管理系统(IO流版)的主要知识点,涵盖了Java基础语法、流程控制、面向对象思想、封装、继承、多态、接口、异常、集合、IO流等多方面的知识。 一、Java基础语法 * 掌握Java的基本语法,包括变量...

    javaIO流基础.zip_IO流 上传 下载文件_io流 上传_io流下载_下载

    在这个“javaIO流基础.zip”压缩包中,我们能看到一系列与文件上传和下载相关的Java代码示例,涵盖了多种IO流类型及其用法。 首先,`TestFileOutputStream.java`和`TestFileInputStream.java`涉及到的是文件输入流...

    嵌入式实验1 单片机IO口——流水灯

    总之,“嵌入式实验1:单片机IO口——流水灯”是一个非常实用的学习起点,它能帮助你建立起对单片机基本功能的理解,为进一步探索嵌入式系统打下坚实的基础。在完成实验后,你可以尝试扩展实验,比如增加更多LED灯、...

    IO流学习(字节流 字符流 文本流)!

    字节流是最基础的IO流类型,分为输入字节流(InputStream)和输出字节流(OutputStream)。它们处理的数据单位是字节,适用于所有类型的数据,包括图片、音频、视频等二进制数据。例如,FileInputStream和...

    学习笔记——资料

    - **IO流**:学习FileInputStream、FileOutputStream、BufferedReader、BufferedWriter等流的使用,理解输入流与输出流的概念。 - **NIO(New IO)**:了解非阻塞I/O模型,以及Channel、Buffer、Selector等NIO组件...

Global site tag (gtag.js) - Google Analytics