1.文件的复制与剪切
1.1文件复制
// 1.定义源文件:要复制的文件
File f1=new File("D:\\其余二\\记事本.txt");
// 2.读取源文件里面的内容
FileInputStream fis=new FileInputStream(f1);
BufferedInputStream bis=new BufferedInputStream(fis);
byte[] bs=new byte[(int)f1.length()];
bis.read(bs);
// 3.定义要存放文件文件夹路径
File f2=new File("D:\\其余二\\文件\\"+f1.getName() );
// 4.定义写入流,把源文件写入到该文件夹里
FileOutputStream fos=new FileOutputStream(f2);
BufferedOutputStream bos=new BufferedOutputStream(fos);
bos.write(bs);//写入读取到的ba数组,write写入的是字节
// 5.关流
bis.close();
bos.close();
System.out.println("复制完成");
1.2剪切文件
// 1.定义源文件:要复制的文件
File f1=new File("D:\\其余二\\记事本.txt");
// 2.读取源文件里面的内容
FileInputStream fis=new FileInputStream(f1);
BufferedInputStream bis=new BufferedInputStream(fis);
byte[] bs=new byte[(int)f1.length()];
bis.read(bs);
// 3.定义要存放文件文件夹路径
File f2=new File("D:\\其余二\\文件\\"+f1.getName() );
// 4.定义写入流,把源文件写入到该文件夹里
FileOutputStream fos=new FileOutputStream(f2);
BufferedOutputStream bos=new BufferedOutputStream(fos);
bos.write(bs);//写入读取到的ba数组,write写入的是字节
// 5.关流
bis.close();
f1.delete();//删除源文件
bos.close();
System.out.println("删除完成");
2.序列化&反序列化
序列化:把java对象转换成文件的过程。
反序列化:把文件转换成java对象的过程。
使用场景:
-
把内存中的对象保存到文件或数据库里面
-
通过套接字在网络中传输
如果定义一个不存在的文件往里面写东西运行不会报错,文件会自动创建
2.1序列化
package com.zking.test;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class Test {
public static void main(String[] args) throws Exception{
// 步骤:
//1.实例化一个类(Dog且赋值),因为对象时基于类存在的
// NotSerializableException:序列化一个对象时对象的类必须要实现Serializable接口
// Serializable 序列化接口(序列化一个类时一定要实现该接口)
// 作用:开启该类序列化的一个功能
// 反序列化时会通过该ID判断对象是否为同一个对象(鼠标放在该类名上点击第一个即可调出该ID)
// implements Serializable
// private static final long serialVersionUID = 1L;
// 2.实例化一个Dog类对象(赋值)
Dog da=new Dog("旺财","公",1);
// 3.序列化对象da,以文件的形式保存到本地(把内存对象保存到电脑本地是输出流/写入流)
// 定义文件对象:把文件对象da写入电脑哪个文件(文件后缀名随便写,也可不写,文件不可打开‘乱码’),bak:备份
File file=new File("D:\\其余二\\da.bak");
FileOutputStream fos=new FileOutputStream(file);//定义输出流/写入流
BufferedOutputStream bos=new BufferedOutputStream(fos);//包装写入流
ObjectOutputStream oos=new ObjectOutputStream(bos);//对象写入流:写对象
// 4.开始将da对象写入到file文件(da.bak)里面
oos.writeObject(da);//把da对象写入到oos文件里面
oos.close();//关流
System.out.println("写入完成!");
}
}
2.2反序列化
// 定义文件对象:反序列化哪个文件
File file=new File("D:\\其余二\\da.bak");
FileInputStream fis=new FileInputStream(file);//定义读取流
BufferedInputStream bis=new BufferedInputStream(fis);//包装读取流
ObjectInputStream ois=new ObjectInputStream(bis);//定义对象读取流/输入流
//读取该文件对象,因readObject()返回的是一个Object类型,
//但读取的是一个Dog类,返回因是Dog类型,所以要强转为Dog类型
Dog da=(Dog) ois.readObject();
System.out.println(da);//打印该文件对象3.