java io 重要吗_你知道JAVA中IO流的事情么?

什么是IO流?简单来说,就是用来处理设备之间的数据传输

Java对数据的操作是通过流的方式,操作流相关的类都在IO包中

按流向分为两种:1.输入流,2.输出流。

按操作类型分为两种:1.字节流 --可以操作任何数据,在计算机中数据都是以字节的形式存储的;2.字符流 --只能操作纯字符数据。

在IO流常用父类:1.字节流的抽象父类:InputStream和OutputStream;2.字符流的抽象父类:Reader 和Writer 。

关系与IO程序在工具中的使用,使用前,导入IO包中相关的类;使用时,要关注好IO异常的处理;使用后,记得释放资源。

那么关于IO流(FileInputStream),我们拿例子来说明一波。先明白read()方法,一次读取一个字节。

//创建一个文件输入流对象,并关联test.txt

FileInputStream fs = new FileInputStream("test.txt");

//定义变量,记录每次读到的字节

int a;

//将每次读到的字节赋值给b并判断是否是-1

while((a=fs.read()) != -1) {

//打印每一个字节

System.out.println(a);

}

//关闭流释放资源

fs.close();

在IO流中,FileInputStream返回值为什么是int? read()方法读取的是一个字节,为什么返回是int,而不是byte?

因为字节输入流可以操作任意类型的文件,比如图片,音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte,有可能在读到中间的时候遇到111111111,那么这11111111是byte类型的-1,我们的程序是遇到-1就会停止不读了,后面的数据就读不到了,所以在读取的时候用int类型接收,如果11111111会在其前面补上。24个0凑足4个字节,那么byte类型的-1就变成int类型的255了这样可以保证整个数据读完,而结束标记的-1就是int类型。

在IO流中,FileInputStream返回值为什么是int? read()方法读取的是一个字节,为什么返回是int,而不是byte?

因为字节输入流可以操作任意类型的文件,比如图片,音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte,有可能在读到中间的时候遇到111111111,那么这11111111是byte类型的-1,我们的程序是遇到-1就会停止不读了,后面的数据就读不到了,所以在读取的时候用int类型接收,如果11111111会在其前面补上。24个0凑足4个字节,那么byte类型的-1就变成int类型的255了这样可以保证整个数据读完,而结束标记的-1就是int类型。

对于IO流的FileOutputStream,我们也拿案例说明一下,它里面包含的方法: write()一次写出一个字节。

//如果没有test.txt,会创建出一个

FileOutputStream fos = new FileOutputStream("test.txt");

//虽然写出的是一个int数,但是在写出的时候会将前面的24个0去掉,所以写出的一个byte

fos.write(98);

fos.write(99);

fos.close();

那么对于图片和音频的操作原理,可以关注好笔者,后续继续来给大家分享IO流的操作。

你可能感兴趣的:(java,io,重要吗)