复制&剪切&序列化

本文介绍了如何在Java中进行文件的复制与剪切操作,并详细讲解了序列化与反序列化的具体步骤及应用场景,包括如何将Java对象转换为文件并从文件中恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值