一、File类
1.如何创建File类的实例
File(String filePath)
File(String parentPath,String childPath)
2.路径
相对路径:相较于某个路径下,指明的路径
绝对路径:包含盘符在内的文件或文件目录路径
3.路劲分隔符
Windows:\
Unix:/
4.常用的方法
Public String getAbsolutePath()获取绝对路径
Public String getPath()获取路径
Public String getName()获取文件名称
Public String getParent()获取上层文件目录路径。若无,返回null
Public long length()获取文件长度(字节数)。不能获取目录的长度
Public long lastModifed()获取最后一次得到修改时间,毫秒值
Public String[] list()获取指定目录下的所有文件或者文件目录的File数组
Public boolean renameTo(File dest):把文件重命名为指定的文件路径
比如file1.renameTo(file2)为例
要想保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在。
Public boolean isDirectory()判断是否是文件目录
Public boolean isFile():判断是否是文件
Public boolean exists():判断是否存在
Public boolean canRead():判断是否可读
Public boolean canWrite():判断是否写
Public boolean isHidden():判断是否隐藏
Public boolean createNewFile():创建文件。若文件存在,则不创建,返回false
Public boolean mkdir():创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建
Public boolean mkdirs():创建文件目录。如果上层文件目录不存在,一并创建
Public boolean delete():删除文件或者文件夹
要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录,否则删除失败
Path toPath()将File对象转换成Path对象
二、IO流原理及流的分类
1.按操作数据单位不同分为:字节流,字符流
2.按数据流的流向不同分为:输入流,处理流
3.按流的角色不同分为:字节流,处理流
4.流的体系结构

5.FileReader读入数据

read()方法的重载

说明点
read()理解:返回读入的一个字符。如果达到文件末尾,返回-1
异常处理:为了保证流资源一定可以执行关闭操作。需要使用try-catch-finally处理
读入的文件一定要存在,否则就会报FileNotFoundException
6.FileWrite

7.FileInputStream和FileOutputStream的使用
=public static int available()返回流的字节数Inputstream的=

8.BufferedInputStream和BufferedOutputStream处理器的使用


9.BufferedRead和BufferedWrite的使用


10.结论:
对于文本文件(.txt,.java,.c,.cpp) 使用字符流处理
对于非文本文件(.jpg,.mp3,.mp4,.avi,.doc,.ppt,….)使用字节流处理
11.图片加密

三、处理流之二:轮换流的使用
1.转换流:属于字符流
InputStreamReader:将一个字节的输入流转换为字符的输入流
OutputStreamWriter:将一个字符的输出流转换为字节的输出流
作用:提供字节流和字符流之间的转换
解码:字节,字节数组—>字符数组,字符串
编码:字节数组,字符串—>字节,字节数组
字符集


2.标准输入,输出流
System类
=System.in:标准的输入流,默认从键盘输入=
=System.out:标准的输出流,默认控制态输出=
=setIn(InputStream is)/setOut(PrintStream ps)方式重新指定输入和输出的流=

3.打印流(处理流)

4.数据流(处理流)

5.=对象流(处理流)=


对象的序列化
对象的序列化机制
允许把内存中java对象转换成平台无关的二进制流,从而预允许把这种二进制流持久地保存到磁盘上,或通过网络将这种二进制流传输到另外一个网络节点。
=序列化的好处在于可将任何实现了Serializable接口的对象转换为字节数据使其在保存和运输时可被还原=
序列化是RML过程的参数和返回值都必须实现的机制,而RML是JAVAEE的基础。因此序列化机制是JAVAEE平台的基础
如果需要让一个对象支持序列化机制,则必须让对象所属的类及其属性是可序列的,为了让某个类是可序列的,该类必须实现如下两个接口之一。否则,会抛出NotSerializableException异常
serialVersionUID的说明:
凡是实现Serializable接口的类都有一个表示序列化版本标识的静态变量:private static final long serialVersionUID=442281502185673631L;
SerialVersionUID用来表明类的不同版本间的兼容性。器目的是以序列化对象进行版本控制,有关各版本反序列化是是否兼容
如果类没有显示定义这个静态变量,它的值在java运行是环境根据类的内部细节自动生成的:=若类的实例变量做了修改,serlaVerslonUID可能发生变化=。故建议,显式声明
简单的来说,java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常


四、=RandomAccessFile的使用=
1.RandomAccessFile直接继承于java.lang.Object类,实现了DataInput和DataOutput接口
2.RandomAccessFile既可以作为一个输入流,又可以作为一个输出流
3.如果RandomAxxessFile作为输出流时,写出文件如果不存在,则在执行过程中自动创建
如果写出文件存在,则会对会话原有的内容进行覆盖,(默认情况下,从头覆盖)
4.

5.RandomAccessFile实现插入数据

五、Path类
1.static Path get(String first,String…more):用于将多个字符串串连成路径
2.static Path get(URL url):返回指定url对应的Path路径
3.boolean startsWith(String path):判断是否以path的路径开始
4.boolean endsWith(String path):判断是否以path的路径结束
5.boolean isAbsolutr():判断是否是绝对路径
6.Path getParent():返回上级(父类)目录的路径
7.Path getsRoot():返回调用Path对象的根路径
8.Path getNameCount():返回与调用Path对象关联的文件名(返回文件名称)
9.int getNameCount()返回Path根目录后面元素的数量
10.Path getName(int index):返回指定索引位置index的路径名称
11.Path toAbsolutePath():作为绝对路径返回调用Path对象
12.Path resolve(Path p):合并两个路径,返回合并后的路径对应的Path对象
13.File toFile()将Path转换为File类的对象 对应的有Path toPath()