java.io.File
file:代表了磁盘的一个文件或目录,该对象属性包含了文件或目录的信息,调用方法可以进行创建、删除
构造方法:
File(String pathname);
File(String parent,String child);
File(File parent,String child);
创建一个FIle对象,因为每一个对象都是指向硬盘上的某一目录或者文件,所以File类没有有参构造方法,所有的构造方法在创建对象的时候都必须要指定
该对象指向的文件或者目录路径
常用的方法:
isFile();判断指定目录是否为文件
isDirectory();判断当前目录时候为目录
注:如果File对象中包含的路径不存在时,就无法判断是文件还是目录
exists();判断当前File包含的路径是否存在
long length();以字节返回文件的大小
mkdir();创建当前FIle指向的目录
mkdirs();创建当前File指向的目录,包括不存在的父目录
CreateNewFile();创建当前目录指向的文件
delete();文件不使用时删除
deleteOnExit();虚拟机退出时,删除文件
注:删除文件或目录时,如果该目录下有文件或者子目录,则无法删除
String getName();获取到文件名或者目录名
File getAbsoluteFile();获取当前对象的绝对路径
流:在计算机和智能设备之间有序的传输的二级制数据序列
流的分类:1.按传输的方向分类:
a.输入流:传输到当前程序
b.输出流:从当前程序输出到其他位置
2.按传输的单位分类:
a.字节流:以字节为单位,进行数据传输
b.字符流:以字符为单位,进行数据传输,字符流的底层也是通过字节传输的
InputStream(字节输入流):
作用:将指定文件中字节读取到程序中去
方法: int read() 读取到一个字节,然后返回,如果读到末尾,则返回-1
int read(byte[] b) 读入b.length的字节数据,数据放置到数组中
void close(); 关闭流
子类:FileInputStream:
OutputStream(字节输出流)
作用:将当前程序中的数据写入到文件中
方法: void write(byte[] b)向文件写入数组中的数据
void write(byte[] b,int offset,int length) 向文件写入指定长度的数组
void flush();对缓存区中的字节数据流刷新操作
void close();关闭流
子类:FileOutputStream
构造方法:FileOutputStream(String pathname);
FileOutputStream(String pathname,boolean append);
append确定是否在源文件上追加数据
java.io.ObjectOutputStream :对象字节输出流
将java对象输出转换成有序的二进制序列,但不能真正进行传输数据,需要借助其他的流来完成数据传输工作
方法:writeObject(Object obj)
tips:1.关闭该流时,也会关闭借助的其他流
2.输出的对象需要实现可序列化接口 Serializable
序列化:把java中的对象转化成有序的二进制序列的过程。
实现序列化:java语言中某一类的对象如果需要进行序列,这个类必须实现java.io.Serializable 接口,表明该类启用了序列化功能
java.io.ObjectInputStream
把二进制序列重写成对象,反序列化。
反序列化:把原始的二进制数据序列重新构建成java语言中的对象
字符流:避免了字符,字节的转化
字符输入流:java.io.Reader
方法:int reader() 单词读取一个字符
void close();
字符输出流:java.io.Writer
java.io.FileReader
作用:将文本文件的字符数据,读取到程序中来
java.io.FileWriter
作用:将字符写入到文本文件中
方法:write() 参数可以是字符,字符数组,字符串
该类维持有缓存,有两种情况缓存中的数据会写入硬盘:
1.缓存用完
2.调用了flush
java.io.InputStreamReader:将字节流转换为字符流
BufferReader
方法:readerLine;读取字符串