四月二十四号java基础知识

2023-05-18,,

1.输入输出是指程序与外部设备或其他计算机进行交互的操作
2.流(stream)是指计算机各部件之间的数据流动
流的内容上划分:流分为字节流和字符流
3.输入流:将数据从外设或外存(如键盘、鼠标、文件等)传递到应用程序的流称为输入流(input
stream)
输出流:将数据从应用程序传递到外设或外存(如屏幕、打印机、文件等)的流称为输出流
(output stream)
也就是说接收数据时可以认为是读数据流,程序发送数据时可以认为是写数据流
4.采用数据流来处理输入输出的目的是使得程序的输入输出操作独立于相关设备
流式输入输出的特点是数据的获取和发送是沿着数据序列顺序进行
5.使用缓冲流(buffered stream)即为一个流配有一个缓冲区(buffer),这个缓冲区就是专门
用于传送数据的一块内存
缓冲流提高了内存与外部设备之间的数据传输效率
6.java.io包中有四个基本类:InputSteam、OutputStream、及Reader、Writer类
它们分别处理字节流和字符流
输入输出流包含字节流和字符流;
字节流:处理字节数据(基本类型为:InputSteam,OutputStream)
字符流:处理字符数据(基本类型:Reader、Writer)
7.InputSteam、OutputStream、及Reader、Writer类是抽象类,用于数据流的输入输出流
File是文件类,用于磁盘文件与文件夹的管理;
RandomAcessFile是随机访问文件类,用于实现对磁盘文件的随机读写操作
8.InputSteam,OutputStream流类通常用来处理“位流”(bit stream)即字节流,这种流通常
被用来读写诸如图片、音频、视频之类的二进制数据,也就是二进制文件,但也可以处理
文本文件;而Reader与Writer类则是用来处理“字符流”(character stream)也就是
文本文件
9.InputSteam、OutputStream、及Reader、Writer类是抽象类,所以一般而言,并不会使用
这些类,因此不能表明它们具体对应那种I/O设备。而通常是根据这些类所派生的子类来对文件
处理,因为这些子类与具体的I/O设备相对应
10.使用InputStream和OutputStream流类:
注意:虽然字节流可以操作文本文件,但不提倡这样做,因为字节流操作文本文件,如果文件
中有汉字,可能出现乱码。这是因为字节流不能直接操作Unicode字符所致。
建议使用字符流操作文本文件
11.输入输出的应用:
文件输入输出流:
FileInputSteam和FileOutputStream分别是InputSteam,OutputStream
的直接子类,这两个子类主要是负责负责对本地磁盘文件的顺序输入和输出操作的流。
FileInputSteam类的对象表示一个文件字节输入流,从中可读取一个或一批字节。在生成
FileInputSteam类的对象时,若指定的文件找不到,则抛出FileNotFoundException异常
,该异常必须捕获或声明抛出。
FileOutputStream类的对象表示一个文件字节输入流,可向六中写入一个或一批字节
在生成FileOutputSteam类的对象时,若指定的文件不存在,则创建一个新的文件,若已存在,
则清除原文件的内容。在进行文件的读写操作时会产生IOException异常,该异常必须捕获或
声明抛出
12.FileDescriptor是java.io包中定义的另一个类,该类不能实例化,该类中有三个静态成员
:in,ou,err,分别对应标准输入流,标准输出流,标准错误流
13.在主方法头添加throws IOException就不用在方法中添加catch语句捕获输入输出异常了
14.fi.available():返回流中的可读取的字节数
fi.read(b);//将图像文件读入b数组
fo.write(b);//将数组b中数据写入新文件“风景1.jpg”
15.顺序输入输出流(SequenceInputStream):
其功能是将多个输入流顺序连接在一起,形成单一的输入输出流,。没有对应的输出流存在。
在进行输入时,顺序输入流依次打开每个输入流并读取数据,在读取完毕后将该流关闭,然后
自动切换到下一个输入流。
也就是说,当一个流中读取数据遇到EOF时,SequenceInputStream将自动转向下一个输入流,
直到构成SequenceInputStream类的最后一个输入流读取到EOF时为止。
16.管道输入输出流(PipedInputStream)(PipedOutputStream):
管道字节输入流PipedInputStream和管道字节输出流PipedInputStream类提供了利用管道
方式进行数据输入个数据输出管理的类。
17.管道流用来将一个程序或线程的输出连接到另外一个程序或线程作为输入,使得相连线程
能够通过PipedInputStream和PipedInputStream流进行数据交换,从而实现程序内部线程
间的通信或不同程序间的通信
18.PipedInputStream和PipedOutputStream类是InputStream和OutputStream的直接子类
这两个类必须结合使用,其中,管道输入流作为管道的接收端,管道输出流作为管道的发送端
19.PipedInputStream是管道的接收端,它必须与一个作为发送端的PipedOutputStream
对象相连;PipedOutputStream是管道的发送端,它必须与一个作为接收端的
PipedInputStream对象相连
20.管道输入输出流提供了两种连接方法:
第一种在构造方法中给出对应的管道流,在创建对象时进行连接。构造如下:
1)PipedInputStream(PipedOutputStream src),创建一个管道输入流,并将其连接到
接收端src的管道字节输出流
PipedOutputStream(PipedInputStream src),创建一个管道输出流,并将其连接到
发送端src的管道字节输入流
2)第二种是利用管道字节输入输出流提供的connect()方法进行连接
PipedInputStream类的常用方法:管道连接方法
连接到指定输出流,管道输入流将从该输出流接收数据
public void connect(PipedOutputStream src)
PipedOutputStream 类的常用方法:管道连接方法
连接到指定输入流,管道输出流将从该输入流读取数据
public void connect(PipedInputStream snk)

总结:今天初步学习了java语言的输入输出流,了解了输入流和输出流,以及它们的子类

通过输入输出流类创建对象对文件进行读写操作,包括二进制文件还有文本文件都可以

另外,对管道输入输出的相互作用觉得跟用户和客户端有点相似

四月二十四号java基础知识的相关教程结束。

《四月二十四号java基础知识.doc》

下载本文的Word格式文档,以方便收藏与打印。