第七章 IO

File类

File类:一个File对象可以表示一个具体的文件或目录

 File f1 = new File("D:\\MySQL\\MySQL Router 8.0");
        System.out.println(f1.exists());
        System.out.println(f1.canRead());
        System.out.println(f1.canWrite());
        System.out.println(f1.getAbsolutePath());
        System.out.println(f1.getParent());
        System.out.println(f1.isDirectory());
        System.out.println(f1.isFile());
        System.out.println(f1.lastModified());
        System.out.println(new Date(f1.lastModified()));

通过各种方法对文件和文件夹进行判断操作

System.out.println(f1.createNewFile());//创建文件/文件夹
System.out.println(f1.delete());//删除文件/文件夹
File file new File("D:/download");
System.oUt.println(file.mkdir());创建单级文件夹
File file new File("D:/download/a/b");
System.oUt.println(file.mkdirs()),创建多级文件夹
File file new File(pathname:"D:/download/a");
file.delete();//删除一个文件夹时,文件夹中必颈是空

输入及输出的概念

输入输出把电脑硬盘上的数据读到程序中,称为输出,即input,进行数据的read操作从程序王外部设备写数据,称为输出,即output,进行数据的write操作

输入流与输出流

java中把用于对文件输入和输出的类称为流

有一些用于输入数据,有一些用于输出数据

有一些类是以字节为单位读取数据的,有一些是以字符为单位读取数据的

字节流和字符流

字节流,读取时以字节为单位,可以读取电脑中任意文件

字符流,读取时以字符为单位,只能读取文本文件txt

输入输出节点字节流

FileInputStream inputStream = new FileInputStream("F:\\demo.txt");
        byte[] bytes = new byte[16];
        int size = 0;
        FileOutputStream fileOutputStream = new FileOutputStream("E:\\test.txt");
        while ((size=inputStream.read(bytes))!=-1){
            System.out.println(size);
            fileOutputStream.write(bytes,0,size);
        }

设置一个byte数组用来定义每次byte数组的长度,在write方法中一次写出byte数组长度的内容,从0开始,写size个

节点流与处理流

节点流:直接封装的是文件数据本身

处理流:封装的是其他节点流对象,在节点流的基础上又提供了其他的增强功能

缓冲处理流:

FileInputStream inputStream = new FileInputStream("F:\\demo.txt");
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
//在原有的输入流外部套上一层缓冲流,缓冲流自带一个8192长度的数组
//用于缓冲,当我们自己定义的数组长度>=缓冲区的长度时,直接输出
//当我们的数组<缓冲区长度时,会先将数据存入缓冲区,待缓冲区存满后进行输出

数据输入输出字节流:

FileOutputStream fileOutputStream = new FileOutputStream("D:/message.txt");
DataOutputStream dataOutputStream = new DataOutputStream(fileOutputStream);
dataOutputStream.writeUTF(message);
FileInputStream fileInputStream = new FileInputStream("F:/message.txt");
DataInputStream dataInputStream = new DataInputStream(fileInputStream);
dataInputStream.readUTF(message);

输入输出节点字符流

Reader:输入字符流

InputStreamReader:转换流,将字节转换为字符

Writer:输出字符流

OutputStreamWriter:转换流,将字符转换为字节

 FileReader reader = new FileReader("D:/testtttt.txt");
        FileWriter writer = new FileWriter("D:/testt.txt",true);
        BufferedReader bufferedReader = new BufferedReader(reader);
        BufferedWriter bufferedWriter = new BufferedWriter(writer);
        String length = null;
        while ((length=bufferedReader.readLine())!=null){
            bufferedWriter.write(length);
            bufferedWriter.newLine();
        }
        bufferedReader.close();
        bufferedWriter.close();

对象输入输出流

ObjectStream:把java中的对象输出到文件中,从文件中把对象输入到程序中

为什么要把对象输出到文件?

数据储存在对象中,对象是在内存中储存,一旦程序运行结束,对象就会销毁

若要将对象信息长久储存,则需要将对象输出到文件中,做到长久保存

把对象输出到文件的过程也称为对象的序列化(如果一个类需要被序列化到文件中,那么这个类就需要实现Serializable接口,实现后自动为该类生成一个序列化编号,编号是类的唯一标识)

但是自动生成的编号在类信息改变后会重新为类生成一个编号,可以在类中显示的生成一个编号,这样类信息改变后也不会创建新的编号

再把对象从文件输入到程序的过程称为反序列化,反序列时会生成一个新的对象,所以反序列化也是创造对象的一种方式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值