一,File
1.1,此类是用来对文件进行操作的,但不能操作文件中的内容
1.2 ,api,构造方法 File file = new File(String path+文件名);
String getName()获取文件或目录的名称
long length()得到文件的长度
boolean isDirectory();判断是否为目录(文件夹)
boolean exists():判断文件或目录是否存在
boolean createNewFile();创建新的文件,创建成功返回true,失败返回false
boolean mkdir():创建次抽象路径指定的目录
boolean mkdirs():创建此抽象路径指定的目录,包含所有必需但不存在的父目录
boolean delete():删除此抽象路径名表示的文件和目录
String getParent();返回文件父目录名称,若没有返回null
long getTotalSpace():返回此抽象路径名指定的区分大小
long getUsableSpace():返回此抽象路径名指定的区分上可用于次虚拟机的字节数
int hashCode():计算此抽象路径名的哈希码
二,IO:Input/Output
输入:读操作
是将程序中的内容读取到程序中
输出:写操作
是将程序中的内容写到磁盘上
在流进行读写操作的时候,便于文件了一条管道,所以使用完流以后,要关闭。
2,IO流的分类
1)按照流向分
输入流和输出流
2)按照单位分
字节流和字符流
3)按照功能分
高级流和低级流
3,字节输入输出流InputStream和OutputStream
InputStream和OutputStream是两个抽象类,它是字节输入输出流的顶级父类
3.1,FileInputStream和FileOutputStream(低级流)
文件字节输入输出流,用于向文件中写入或从文件中读取字节,如果已经读到该文件的末尾,则读方法返回-1
FileOutputStream中的write(int)返回值为void
FileInputStream中的read()返回值为int型
FileOutputStream的构造器:new FileOutputStream(String path,boolean true),追加写
new FileOutputStream(String path)覆盖写
3.2 BufferedInputStream和BufferedOutputStream(高级流)
缓冲字节输入输出流内部维护了一个缓冲区,缓冲区默认的大小为8k,当我们读取到的内容先方法缓冲区中,当缓冲区满了以后,会一次性将数据写到硬盘上,
1)如果我们设置的字节数组的大小大于缓冲区默认的大小,则缓冲区失效,直接从硬盘上读取
2)如果设置的字节数组的大小小于缓冲区的大小,那么会先从缓冲区读取
3.3DataInputStream和DataOutputStream(高级流)
可以操作所有的基本数据类型,而且用此流复制的音频和视频不会出现内容丢失
写操作:void write(int a):写入4个字节
void write(byte[] b):写一个字节
void writeDouble(double d):写8个字节
void writeUTF(String s):写一个字符串
3.4,ObjectInputStream和ObjectOutputStream(序列化)
写操作:void writeObject(object o):将o对象写入到文件中有一个要求
要求:o所对应的类实现序列化接口,且在读操作的时候,该类的序列号要一致,否则会出现异常
用transint:修饰的被忽略,瘦身的意思
读操作:Object readObject()
4,字符输入输出流(Reader/Writer)***复制音频和视频不能用字符流,因为复制音频和视频的时候也是转换成字节,所有会有 偏差,但试用于文本复制,效率高
InputStreamReader和OutputStreamWriter
写操作: void write(int a):将int值的“低16位”写入到文件中
void write(char[] cs):将字符数组写入到文件中
BufferedReader/PrintWriter
写操作:void println():将一行数据写入到文件中
读操作: String readLine();从文件读取一行内容