1.数据流
>概述
方便操作java中的基本类型和字符串类型的数据
>使用
try(
FileOutputStream fos = new FileOutputStream("./Assignment_day21/src/com_exercise/test.txt");
DataOutputStream dos = new DataOutputStream(fos);
){
//写出
dos.writeByte(12);
dos.writeShort(122);
dos.writeInt(3020);
dos.writeLong(95899);
dos.writeUTF("中国");
dos.writeDouble(13.333);
dos.flush();
}catch (IOException e){
e.printStackTrace();
}
2.File
>概述
File类提供了对文件和目录进行相关操作的方法
通过File类的对象可以调用相关的方法来进行操作
>构造方法
public File(String pathname) : 以pathname为路径创建File对象
public File(String parent,String child) : 以parent为父路径,child为子路径创建File对象
public File(File parent,String child) : 根据一个父File对象和子文件路径创建对象
>常用方法
public String getAbsolutePath() : 获取绝对路径
public String getPath() : 获取路径
public String name() : 获取名称
public String getParent() : 获取上层文件目录路径,如果没有就返回null
public long length() : 获取文件的长度(字节数)
public long lastModified() : 获取最后一次修改的时间(毫秒数)
public String[] list() : 获取指定目录下的所有文件或文件目录的名称数组
public File[] listFiles() : 获取指定目录下的所有文件或文件目录的File数组
public boolean renameTo() : 把文件重命名为指定的文件路径
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() : 删除文件或文件夹
>使用
//创建文件对象
File file = new File("D:\\网页下载");
//获取全路径
System.out.println(file.getAbsolutePath());
//获取文件名
System.out.println(file.getName());
//获取父路径
System.out.println(file.getParent());
//获取父路径文件对象
File supFile = file.getParentFile();
//判断是否是文件
System.out.println(file.isFile());
//判断是否是目录
System.out.println(file.isDirectory());
//获取最后一次修改时间对应的毫秒数
System.out.println(file.lastModified());
//判断是否存在
System.out.println(file.exists());
//删除
file.delete();
file = new File("D:/exer/a/b/c/test.java");
supFile = file.getParentFile();
if(!supFile.exists()){
supFile.mkdir();
}
file.createNewFile();
file = new File("D:\\exer\\java");
File[] f = file.listFiles();
for(File file1 : f)
System.out.println(file1.getAbsolutePath());
>递归复制
示例 : 定义一个方法找出电脑D盘中所有以mp4结尾的文件
public static void fun(File file){
//列出该文件夹下的所有子文件
File[] files = file.listFiles();
//如果这个数组不为空 即该文件夹下有内容
if(files != null) {
//遍历
for (File fs : files) {
//如果是文佳
if (fs.isFile()) {
//读取文件的名字 判断是否以.mp4结尾
String name = fs.getName();
if (name.endsWith(".mp4"))
System.out.println(fs);
} else { //如果是目录 则递归调用
fun(fs);
}
}
}
3.对象流
>序列化
1)何为对象序列化机制
对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络这种二进制流传输到另一个网络节点
2)如何实现序列化机制
如果需要让某个对象支持序列化机制,则必须让对象所属的类及其属性是可序列化的,为了让某个类是可序列化的,该类必须实现serializable接口
>反序列化
反序列化,就是将已序列化的对象重新变为原来的对象
>serialVersionUID
这个UID就是class的版本控制
每次修改class的时候,UID都会自动进行修改,所以我们一般会手动设置一个固定的值
public class User implements Serializable {
//版本号 每次修改class文件的时候,UID都会自动进行修改 一般可以手动设置一个固定的版本号
private static final long serialVersionUID = 1L;
>transient
修饰符,被transient修饰的属性不能再被序列化