在java.io.*包中,包含了java文件读写,输入输出流的各种类。
流的分类
节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader
处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
1. InputStream和OutputStream
抽象类,实现了Closeable接口(OutputStream还实现了Flushable接口),表示所有字节(byte)输入输出流的基类。有些最基本的read和write方法。
Reader和Writer
抽象类,实现了Readable接口和Closeable接口(Writer实现了Appendable,Flushable,Closeable接口),表示所有字符(两个字节,如:char)输入输出的基类。也有些最基本的read和write方法。
2. File
继承Object,实现了serializabable和comparable接口。里面有些基本的对文件的操作
创建文件file.createNewFile(); 文件夹file.mkdirs();判断可读可写file.canRead();是目录还是文件dirFile.isDriectory();文件字节数file.length();返回当前路径下所有的文件及文件夹file.listFiles()。等等。。
3. 文件
FileInputStream与FileOutputStream;FileReader与FileWriter(节点流)
接受一个File对象或者文件路径,将文件信息转化为byte[ ]或char[ ]。
4. 数组
ByteArrayInputStream ByteArrayOutputStream(CharArrayReader CharArrayWriter)(节点流)(对应的不是文件,而是内存中的一个数组)
文件下载用到了这个,先将文件信息写入到ByteArrayOutputStream,再用new ByteArrayInputStream(ByteArrayOutputStream.toByteArray()),就可以将输出流转化为输入流。
5. 字符串
StringReader和StringWriter(节点流)
其源为一个字符串的字符流。reader就没什么好说啦,从给定的字符串中读取数据。而StringWriter比较NB,它有一个toString()方法可以返回在缓冲区中的值(String)。比如想在数据输出以前显示一下(GUI设计),用StringWiter.toString()就很方便了。(类似于ByteArrayInputStream ByteArrayOutputStream)。
6. 管道
PipedInputStream PipedOutputStream (PipedReader PipedWriter) (节点流)
暂时没用过。。
常用的处理流
缓冲流
7. BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter
传入一个节点流,增加缓冲功能,避免频繁读写硬盘,可以初始化缓冲数据的大小,由于带了缓冲功能,所以就写数据的时候需要使用flush方法。
转换流
8. InputStreamReader OutputStreamWriter——要inputStream或OutputStream作为参数,实现从字节流到字符流的转换。
数据流
9. DataInputStream DataOutputStream
节省空间,比如long a = 1000000;实际上只用8个字节,用字符串的话要用7个字符(14个字节)。注意读的时候和写的时候顺序要一致。
Object流
10. ObjectInputStream ObjectOutputStream
在这里就涉及到序列化的概念了,就是将一个对象整个存入硬盘。
相关知识:transient关键字--修饰成员变量,不写入该成员变量 。Serializable接口--表示接口,怎样实现的呢,在序列化之前,首先判断 (对象 instanceof Serializable)如果返回true则执行序列化,否者抛出异常,并且里面有一个ID,是用来快速查找某个对象的时候使用的。
打印流
11. PrintStream PrintWriter
不会抛异常,自动flush。适合用在jsp页面打印。
PrintStream--继承自-->FilterOutputStream--继承自-->OutputStream(它的构造函数需要OutputStream对象)
PrintWriter---继承自-->Writer(它的构造函数需要Writer对象)
System.in====InputStream
System.out===PrintStream
分享到:
相关推荐
《精通JAVA——JDK》是一本深度探讨Java编程语言及其开发工具集JDK的专业教程,旨在帮助Java开发者提升技能,实现技术的精进。作为Java的基石,JDK(Java Development Kit)是学习和开发Java应用程序必不可少的工具...
初学Java——模拟路网(csdn)————程序 本资源归纳了初学Java——模拟路网(csdn)————程序的知识点,主要包括Java基础知识、红绿灯模拟、随机数生成、道路生成、车辆模拟等几个方面。 一、Java基础知识 ...
在 Java 中,输入输出是通过流(Stream)来实现的。InputStream 和 OutputStream 分别对应输入流和输出流。BufferedReader 是一个输入流,用于从命令行读取用户输入。在本例中,我们使用 BufferedReader 读取用户...
"java——comm.jar串口通信包"就是这样一个工具,它提供了Java语言进行串行通信的能力。这个库通常被称为Java.comm API,允许Java应用程序通过串行端口与外部设备进行数据交换,比如单片机。 Java.comm API是Sun ...
下面我们将详细探讨这个"Java——简易计算器"项目中的关键知识点。 首先,让我们从基础开始。一个简单的Java计算器程序通常会包含一个主类(Main Class),在这个主类中,我们定义主方法(main method),它是程序...
### Java——知识点归纳总结 #### 概述 Java是一种简单且强大的面向对象编程语言,以其跨平台特性闻名,即“一次编写,到处运行”。Java语言的设计原则包括分布性、安全性、健壮性和多线程性,使其成为互联网时代...
除了以上问题,Java面试还可能涉及其他主题,如异常处理、多线程、集合框架、IO流、反射、设计模式、垃圾回收机制、JVM内存模型、数据库连接、Spring框架等。掌握这些核心概念和技术对于成为一名优秀的Java开发者至...
4. **IO流**:Java的IO流用于处理输入和输出,包括字符流和字节流,实习生可能需要编写读取文件、写入数据到文件的代码。 5. **多线程**:Java提供了丰富的多线程支持,通过Thread类或Runnable接口实现。实习生会...
【Java——Demo智能火车票购票系统源码】是一个基于Java编程语言开发的示例项目,旨在展示如何构建一个简单的火车票预订系统。该系统利用了数据库技术,具体使用了MySQL作为后台数据存储,并且通过Java的JDBC(Java ...
下面我们将详细探讨Java软件测试的相关知识点,并结合提供的两个压缩包文件名——Calculator.zip和MoreTriangle.zip进行分析。 1. **单元测试**:在Java开发中,单元测试是验证代码模块功能是否按预期运行的基本...
本项目显然旨在通过模仿Windows界面来实现一个简易的文件管理系统,这为我们提供了实践和理解Java I/O流、图形用户界面(GUI)以及事件处理的机会。以下是关于这个主题的一些关键知识点: 1. **Java I/O 流**:Java...
此外,理解异常处理、IO流、线程等也是必不可少的。 2. **Java Swing或JavaFX**:"飞机大作战"可能使用了Java的Swing库或者JavaFX库来创建用户界面,这两个库提供了丰富的组件和工具来构建图形用户界面,如窗口、...
这个版本在2014年发布,引入了许多新特性,如lambda表达式、流API(Stream API)、新的日期和时间API等。 2. **JDK与JRE**:JDK(Java Development Kit)是Java开发人员所需的完整工具集,包括JRE(Java Runtime ...
"Thinking in Java——自己手写的代码"这个压缩包很可能是作者在阅读这本书的过程中,为了加深理解和实践,自己编写的代码实现。 在压缩包"Think in Java 4 code"中,我们可以预期找到与《Thinking in Java》第四版...
5. **输入输出流**:Java的I/O流系统是处理数据输入和输出的重要部分,包括文件操作、网络通信等。 6. **多线程**:Java内置了对多线程的支持,可以创建和管理多个执行线程,提高程序的并发性能。 7. **字符串处理...
【Java毕业设计】毕业设计——流媒体视频直播服务器(Java + MySQL + FFmpeg + RTSP) 这个毕业设计项目是基于Java技术实现的流媒体视频直播服务器,它整合了多种关键技术来构建一个完整的实时流媒体系统。以下是这...
这份“java基础——————试题库”资源旨在帮助学习者系统地复习和深入理解Java的基础知识,确保他们能够全方位地掌握这一强大的编程工具。下面将详细阐述Java的基础知识点。 1. **Java简介** - Java是由Sun ...
毕业设计——流媒体视频直播服务器(Java + MySQL + FFmpeg + RTSP + RTP)