一、重点知识
getname获得的是文件名
getpath()获得你开始定义时声明的文件路径
字节流是一个最根本的流,数据的本质就是以字节为单位存储的
四个读写流基类都是抽象得
只有空文件夹才可以直接删,文件夹里面有空文件夹他也算有文件
进行遍历操作时,你要想好迭代的条件能否满足获得每一个文件和文件名这个目的
read(byet[])返回的为实际读入的数据量,一旦读不到数据了,就返回-1
流中的数组读入数据进行的是覆盖操作,新读入的数据,覆盖原来的数据
avaliable()计算还有多少个字节未读
skip(long)跳过多少个字节读
节点流每次写入数据,都会重新在开头位置写入
输出流写出换行“\r\n”
输出流写出文件时如果文件不存在那么会自动创建,但文件夹不存在会报错,找不到此路径
fileoutputstream用构造方法带boolean append得可以不覆盖在文件末尾添加数据
二、重点问题
1、向文件中写数据的时候,如果文件不存在,能写吗?如果文件所在的文件夹不存在,能写吗?
如果文件不存在,FileOutputStream在写出数据的时候,会先创建文件,再写出。
但是如果文件夹不存在,那么就报错。(java.io.FileNotFoundException: C:\Ruby\pro\aa\bb\abc.txt (系统找不到指定的路径。)
2、能不清空的写,在最后添加
FileOutputStream(path)-->开头写
FileOutputStream(path , append-->true)-->末尾写
三、课堂知识
3.1、4大基类流
InputStream,字节输入流:抽象的
OutputStream:字节输出流:抽象的
Reader:字符输入流:抽象的
Writer:字符输出流:抽象的
3.2、IO流的操作步骤
step1:确定数据从哪到哪。文件信息。
step2:创建流:
流向:输入,输出
单位:字节,字符
子类流:文件,内存
step3:操作流
读取数据:输入
read()
写出数据:输出
write()
step4:关闭流
close()
3.3、FileInputStream
用于以字节为单位,读取文件中的数据,到程序中。
1、构造方法:
FileInputStream(String name)
通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。
FileInputStream(File file)
通过打开与实际文件的连接创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。
read()-->int
每次读取一个字节。返回值就是读入的数据本身。如果读到文件的末尾了,-1。
read(byte[] bs)-->int
每次读取多个字节,最多是bs数组的长度个。返回值是本次读取的实际的字节个数。如果到达末尾,-1.
int read(byte[] bs, int off, int len)
从该输入流读取最多 len字节的数据为字节数组 。第一个参数表示要存储本地读取的数据的数组,第二个参数,表示从哪个下标开始存储,第三个参数是表示本次读取预计的读取数量。该方法的返回值是本次读取的实际数量。如果到达文件末尾,-1。
3.4、FileOutputStream
构造方法:
FileOutputStream(String name) ,在文件开头写,
创建文件输出流以指定的名称写入文件。
FileOutputStream(String name, boolean append) ,在文件的末尾写数据,追加
创建文件输出流以指定的名称写入文件。
FileOutputStream(File file) ,在文件开头写,擦除写
创建文件输出流以写入由指定的 File对象表示的文件。
FileOutputStream(File file, boolean append) ,在文件的末尾写数据,追加
创建文件输出流以写入由指定的 File对象表示的文件。
写出去的数据,是清空写。将文件中原来的数据全部擦除,从头开始写数据。
void write(int data),将参数,这个字节数据写出去
void write(byte[] b),将 b.length个字节从指定的字节数组写入此文件输出流。
void write(byte[] b, int off, int len) ,将 len字节从位于偏移量 off的指定字节数组写入此文件输出流。
网友评论