本文仅作为自学时的笔记参考
目录
File类
想要读取文件中的信息?那我们就得有个“文件”对象来处理!
File类的对象主要是用来获取文件本身的一些信息,例如文件所在的目录、长度、读写权限等等,与文件的读写操作无关。
那怎么创建一个File类的对象呢?
这里有三个构造方法:
File(String filename)
File(String directoryPath , String filename)
File(Filedir , String filename)
也可以查阅api帮助文档,如下图:
其实就是可以通过文件名或者根目录与文件名来创建File实例。【URI这种创建方式不常见。】
这里是更详细的构造方法:
通过创建实例,便可以获取文档信息了。
可以通过下列方法获取信息,大多都是见名知意,所以这里不再多解释。
其中比较常用的是下图这些:
目录
1、创建目录
File对象调用public boolean mkdir()来创建目录,成功会返回true,失败则会返回false【比如该目录已存在】
2、列出目录
public String [ ] list():用字符串形式返回目录下的全部文件
public File [ ] listFiles():用File对象形式返回目录下的全部文件
public String [ ] list(FilenameFilter obj):用字符串形式返回目录下的指定类型的所有文件
public File [ ] listFiles(FilenameFilter obj):用File对象形式返回目录下的指定类型的所有文件
这里的FilenameFilter是一个接口,该接口下有一个方法:
文件创建与删除
如下图这样创建文件,便可以调用createNewFile()方法,建立一个文件!
【这边要写个异常处理】
然后就可以创建出文件啦!
删除文件也很简单:
这样文件就消失啦!
文件字节输入流
使用输入流包括四个步骤,即设定输入流的源、创建指向源的输入流,让输入流读取源中的数据、关闭输入流。
用人话讲就是,创建一个对象,来处理输入的通道。
那之后我们一样也会讲一个输出流,对应输出的通道。
如果对于文件的读取需求比较简单,我们可以使用FileInputStream类,该类是InputStream的子类,以字节为单位读取文件。
有下面两种构造方法:
FileInputStream流打开一个到达文件的通道。
注意,有可能输入流指向的文件不存在,我们也需要进行异常处理。
【IOException】
看,这样我们就开辟了一个输入流指向我们刚刚创建好的文件。
那我们开辟了这个输入流之后,就可以调用里面的方法,来读入文件里的数据了!
文件字节输入流会顺序地读取文件,只要不关闭流,每次调用read()方法都顺序地读取源中其余的内容,直到源的末尾或流被关闭。
文件字节输出流
输出流和输入流有异曲同工之妙,其实就是开辟一个输出流,来指向输出的文件。
下面是构造方法:
以及可以调用的write方法:
这样就可以把想要输出的内容,写到自己指定的文件中了。
文件字符输入和输出流
除了文件字节流以外,还有字符流。
以字节为单位处理数据的话,不能很好地操作Unicode字符,例如一个中文在文件中占用两个字符,很有可能就会出现乱码的现象。
FileReader和FileWriter分别是Reader和Writer的子类,其构造方法如下:
文件字符输入输出流的read()和write()方法使用字符数组读写数据,即以字符为基本单位处理数据。
以上就是自己的一些学习记录,如果有误,可以在评论区指出~
学习总结:听完课后,对于这些流所面向的需求有了更深的理解!并且明白了怎么读到文件结束,并且文件读入的时候,要用n接收读入了几个字节,即while(n = reader.read(c)!=-1),然后这样可以确定每次读入的字节长度。明白了缓冲流是很强大的流,可以大大加快速度。