java I/0流属于java基础知识,是每个java学习者必须要掌握的知识点,尤其是在学习网络编程时尤为重要。
在变量、数组和对象中存储的数据是暂时存在的,程序结束后它们就会丢失,为了能够永久地保存程序创建的数据,需要将其保存在磁盘文件中,这样就可以在其他程序中使用它们。JAVA的 I/O技术可以将数据保存到文本文件中、二进制文件甚至是ZIP压缩文件中,以达到永久性保存数据的要求。掌握I/O处理技术能够提高对数据的处理能力。
Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。
流是一组有序的数据序列,根据流操作的类型,可分为输入流和输出流两种。I/O(Input/Output,输入/输出)流提供了一条通道程序,可以使用这条通道把源中的字节序列送到目的地。虽然I/O流通常与磁盘文件存取有关,但是程序的源和目的地也可以是键盘、鼠标、内存或显示器窗口等。
理解:
一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。
JAVA语言定义了许多类专门负责各种方式的输入/输出,这些类都被放在java.io包中。其中,所有输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;而所有输出流都是抽象类OutputStream(字节输出流)或抽象类Writer(字符输出流)的子类。
1.输入流
InputStream类是字节输入流的抽象类,该类中所有方法遇到错误时都会引发IOException异常。
read()方法:从输入流中读取数据的下一个字节。返回0~255范围内的int字节值。如果因为已经到达流末尾而没有可用的下一个字节,则返回值为-1
read(byte[] b):从输入流中读入一定长度的字节,并以整数的形式返回字节数。
mark(int readlimit)方法:再输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数。
reset()方法:将输入指针返回到当前所做的标记处
skip(long n)方法:跳过输入流上的n个字节并返回实际跳过的字节数
markSupported()方法:如果当前流支持mark()/reset()操作就返回true
close()方法:关闭此输入流并释放与该流关联的所有系统资源
注意:并不是所有的InputStream类的子类都支持InputStream中定义的所有方法,如skip()、mark()、reset()等方法只对某些子类有用
import java.io.FileInputStream;
public class FileInputStream_test {
//读取桌面上的txt文件并输出内容
public static void main(String[] args) throws Exception {
FileInputStream fileInputStream=new FileInputStream("C:\\Users\\liuyue\\Desktop\\test.txt");
byte[] bytes=new byte[1024];
int len=fileInputStream.read(bytes);
String string=new String(bytes,0,len);
System.out.println(string);
fileInputStream.close();
}
}