Java基础之IO流——包含IO流的乱码问题
IO流其实就是输入输出流,这里的输入和输出特别容易搞混,但其实只要知道其是针对Java程序来说的输入和输出就很好判断了。
从计算机文件或者别的地方,甚至是键盘将数据赋给Java程序的过程称为输入流;从Java程序将数据写入别的地方的叫输出流。可以简单记为,输入流将数据输入到程序;输出流将数据从程序中输出。
那么输入程序的程序自然要用读(read)操作,从程序输出的自然就是写(write)操作。明白这些之后,我们来看Java的IO流代码学习。
File类
我们用正常的想法来看,我们无论是从计算机的一个文件种读取数据,还是将数据写入计算机的某个文件,我们都需要进行以下的操作。找到该文件的所在位置(输出时如果不存在该文件会默认创建)——>对文件进行一些操作——>执行文件,写入或者读取数据(这里有一个问题,就是该文件的权限)。那么File类是用来解决前两步,以及第三步的权限等一系列问题的。
学习Java最简单的方法就是看Api,也就是说明文档,如果需要中文版的说明文档可以下面留言。
我们首先来看的构造函数
File的构造方法
直接上代码,具体讲解会在后面视频里体现
程序
结果
从程序的结果来看,虽然我们得到了这样一个文件路劲,但其实系统并没有自动创建该文件。所以也就体现了这个类的特点,它只是找到该文件,并对文件的一些信息进行查询。信息包括了文件是否存在,以及文件的权限。
需要注意的是如果使用父抽象路径构造File类对象的话,这个父类对象必须是文件夹,因为你不可能在一个文档中在创建一个文件。当然程序不会报错(因为不存在),但不符合我们的计算机文件设置。
至于该对象的具体方法不一一介绍,在Idea中直接点取自然有提示,而且方法名字都很容易理解。
File对象的方法
File类的基本操作
IO的输入及输出
IO流的实现通常有两种方式,字节流和字符流。这个很好理解,写的数据对象不同而已。
字节流
既然叫字节流,自然写的对象和读的对象都是字节。我这里所说的是读和写的函数的参数都是字节。至于至于中间进行了怎样的数据转换无所谓,保证在读写的函数时其数据类型为字节即可。
字节输入流
在写这个过程中遇到了一个中文与字节之间的ASCII码问题。在视频中会详细讲解一下。
字符输出流
这里同样涉及到中文的转码问题。当然还有一个缓冲区的问题,这样基本上IO 的字节流就没有什么问题了。
字符流
对于字符流其与字节流其实没有太大区别,唯一的区别就是之前强调的,其读写的参数为字符数据类型。
字符流
缓冲流
缓冲流,缓冲流能提升IO流的读取效率。其技术是缓冲技术,先将数据写入或者读入内存,再统一写入或者存入程序。
缓冲流
上述代码供参考,下面我们视频内容详细讲解下本次IO流。
46:20IO流讲解
说的不好的话还望包涵,另外有什么需要的话可以留言。