java常用的io流,java基础io全部流详解
目录
Java语言I/O类库1。流2的概念。流3的分类。流4的功能。iostream类库使用InputStream和OutputStream类1。基本iostream 1。在比特流类别2中。输出流类2。iostream 2.1文件iostream 2.2顺序输入流2.3流水线iostream 2.4过滤器iostream 2.5标准输入输出你要学会的:
流的概念,处理字节流的类,处理字符流的类,Java标准输入输出文件管理类
Java语言的输入输出类库
00-1010流是指计算机组件之间的数据流。可以是原始的二进制数据,也可以是编码后的特定数据。
00-1010根据数据传输方法,流被分为输出流和输入流。按内容分为字节流和字符流。
00-1010用户可以通过流读写数据。
输入输出流
在Java中,不同的输入和输出源(文件、屏幕、键盘等。)抽象为流,输入输出数据称为数据流,是Java程序接收和发送数据的一个通道。从键盘等外设向程序传递数据称为输入流,只能从中读取数据而不能向其中写入数据,输出流也类似。
数据的接收和发送是沿着数据的顺序进行的,每一个数据都要等前面的数据被读取或发送后才能被读取或写入。
缓冲流
数据流中的每个操作都是以字节为单位的。为了提高数据传输的效率,通常使用缓冲流。缓冲是将现有流与缓冲区相匹配。比如写数据时,数据会先送到缓冲区,缓冲区满了再送到外接设备。
1.流的概念
Java语言的iostream封装在java.io包中,使用前要进行试点。用户可以在包中选择不同的流类,实现各种数据的输入输出。字节流每次读取的都是8位二进制数,无法对这些数据进行分解、重组和理解,因此可以恢复到原来有意义的状态。该流每次读取16位二进制数,并将它们视为一个字符。字符流的源或目标通常是文本文件,Java语言使用Unicode编码。字符流可以实现程序内部格式与文本文件、显示、输出等外部格式之间的转换。java.io中有四个类:
InputStream等四个类是抽象类,用于数据输入输出。不能直接使用,因为不能指明它对应的是哪一个I/O设备,表明了I/O操作和相关设备的独立性。File是一个文件类,用于管理磁盘文件和文件夹。RandomAccessFile是一个随机访问文件类,用于随机读写磁盘文件。字节流类通常用于读写图片、视频等二进制数据,但也可以用于处理文本文件。字符流类通常用于处理文本文件。因为字节流不能直接操作Unicode编码,所以不建议使用字节流读取文本文件,因为文件中可能存在乱码。
00-1010以下流类的构造方法和常用方法见Java api。
2.流的分类
3.流的作用
InputStream流类包含一组所有字节输入所需的方法,可以完成从输入流中读取数据的操作。当程序从键盘、磁盘文件等外围设备读取数据时。它必须先创建一个子类对象来连接外设,然后调用对象继承的read()方法来实现输入操作。流中的方法都声明抛出异常,所以在程序中调用流方法时,要处理异常,否则编译会失败。
00-1010OutputStream类包含一组所有字节输出所需的方法,可以完成从输出流写入数据的操作。当一个程序向屏盘文件等外设输入数据时,首先要创建一个子类对象与外设连接,然后调用这个对象继承的write()方法实现输出操作。
00-1010InputStream类和OutputStream类是抽象类。在实现输入输出操作时,对于不同情况下数据的输入输出操作,要派生出不同的子类。让我们一起来学习这些课程:
4.输入输出流类库
FileInputStream和FileOutputStream流负责本地磁盘上文件的顺序输入和输出操作。FileInputStream类的对象表示可以从中读取数据的文件字节输入流。如果在生成该类的对象时找不到指定的文件,将引发FileNotFoundException异常。异常必须被捕获或声明为抛出。OutputStream类的对象表示一个文件字节输出流,数据可以写入该流。当生成这个类的对象时
时若找不到文件则创建一个新文件,若已存在,则清除原文件的内容。在进行文件读写操作时会产生IOException异常,该异常必须捕获或声明抛出。其中File是java.io包中的类,每个File对象表示一个磁盘文件或者文件夹,其中属性包含了文件夹的名称长度等信息。无论哪一个构造方法,在创建文件输入输出流时都可能因为文件名不对,路径不对,属性不对等无法打开文件造成错误,抛出FileNotFoundException异常,执行writer()和reader()方法时因为IO错误抛出IOException异常。所以输入输出流并调用构造方法以及执行读写操作的语句应放在try语句块中,并由相应的catch语句捕获异常。FileDescriptor是该包中的另一个类,不能实例化。其中有三个静态成员变量in,out,err。分别是标准输入输出流,标准错误流,可以利用它们实现键盘输入屏幕输出。
2.2顺序输入流
顺序输入流SequenceInputStream是将多个输入流顺序连接在一起,形成单一的数据输入流,没有对应的数据输出流。在输入数据时,顺序输入流依次打开每个输入流并读取数据。直到最后一个输入流读取到EOF时为止。
2.3管道输入输出流
管道输入输出流为了实现程序内部线程间的通信或者不同程序的通信,这两个类要结合使用,输入流作为接受端,输出流做为发送端。管道字节输入流PipedInputStream类和管道字节输出流PipedOutputStream类提供了管道的方式数据输入输出管理类。
2.4过滤输入输出流
过滤字节输入输出流时建立在基本输入输出流之上的,在输入输出数据时可以对数据做类型和格式的转换,即可以对二进制字节数据理解和编码转换。过滤字节输入流FilterInputStream和过滤字节输出流FilterOutputStream可以在数据读写的同时实现数据操作。是上面两个类的直接子类,也属于抽象类,被DateInputStream和DateOutputStream继承。有时候我们并不希望数据的传输以字节为基本单位,如一个二进制文件存放的是整型数据,我们希望按照int为基本单位进行数据传输。这两个过滤流可以将基本数据输入输出流转换为基本数据类型的过滤流。
2.5标准输入输出
前面说到的,在一般操作时,要先创建一个输入输出的实例化对象,完成与外设的连接,但是在与标准的输入输出设备连接时不用这样。Java系统实现在java.lang.System包中定义了静态流对象,输入流System.in,一般指键盘。输出流System.out,一般指屏幕。标准错误输出设备System.err使程序运行错误时有日志等固定输出位置。(1)标准输入,System.in是BufferedInputStream的对象,当程序从键盘读入数据时,调用System.in的read方法,从缓冲区读入一个二进制数据。使用时包含在try语句中,并捕获或者抛出异常。(2)标准输出:System.out是打印输出流PrintStream的对象。PrintStream类是过滤字节输出流FilterOutputStream的一个子类,定义了print和println等不同的方法向屏幕输出。(3)标准错误流:System.err用于显示用户错误信息,是由PrintStream派生的类,作用是利用print把错误打印到屏幕上。使用与out同样的方法:例如System.err.print("错误")
。
代码示例:
import java.io.*;public class A_2 { public static void main(String[] args){ try{ byte[] b=new byte[128]; System.out.print("请输入字符:"); int count=System.in.read(b); System.out.print("输入的是:"); for(int i=0;i<count;i++){ System.out.print(b[i]+" "); System.out.println(); } class InClass=System.in.getClass(); class OutClass=System.out.getClass(); } }}
到此这篇关于Java超详细梳理IO流的使用方法上的文章就介绍到这了,更多相关Java IO流内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。