JAVA-IO(后端第三次培训)

在细讲JavaIO之前,先了解一下文件这个概念,这里IO可以简单分解成In-Out(输入-输出),这里输入输出的对象,简单理解一下就是各式各样的文件。内存中存放的数据,在电脑关机后就会消失。如果需要长久保存文件,就需要硬盘,磁盘,光盘,U盘等存储设备,在数据存储过程中,为了区分数据类别以及方便查询,就出现了“文件”的概念。

日常使用中按功能区分为文本文件、视频文件、音频文件、图像文件等等。但是在存储介质中,本质都是一个0、1组成的比特串。

为了方便文件的管理,又出现了树形目录机制,文件夹下可以存放文件,也可以嵌套文件夹,这就便利了用户对文件的管理与使用。

Java如何实现对文件和目录的操作?
Java作为一种面向对象语言,自然是通过对象,java将文件/目录的各种信息进行封装,如此就诞生了一个对象。通过对这个对象操作,就能获取文件的各种信息,以及进行创建、删除、修改等操作。

对文件/目录的操作:

import java.io.File;
import java.io.IOException;

public class Test01 {
    public static void main(String[] args) throws IOException {

        //将文件封装成一个File类的对象
        File f1 = new File("C:\\work\\bluemsun\\IO\\TestDemo.txt");
        //注意转义问题
        File f11 = new File("C:\test.txt");    // Windows 是 \  存在问题,转义字符 \t 制表符
        File f12 = new File("C:\\test.txt");   // 因此要用 \\ 进行识别

        //如果是跨平台使用则建议使用File.separator方法获取系统的分隔符
        File f2 = new File("C:"+File.separator+"work\\bluemsun\\IO\\TestDemo.txt");
        /**
         * File.separator代表系统默认文件目录分隔符,即我们所说的“斜线”
         * 但由于在Windows系统中分隔符为“\”
         * 而在Linux系统中分隔符为“/”
         */

        /**
         * 1、separatorChar
         *       代表系统的默认名称分隔符,它被表示为一个字符串(只包含一个字符)。
         * 2、pathSeparator
         *       此字符用于分隔以路径列表形式给定的文件序列中的文件名
         *       在 UNIX和Linux系统上此字段为 ' : '
         *       在Windows 系统上为 ' ; '
         * 3、pathSeparatorChar
         *       代表系统的路径分隔符,它被表示为一个字符串(只包含一个字符)
         */

        //文件操作常用方法
        System.out.println("文件是否可读:" + f1.canRead());
        System.out.println("文件是否可写:" + f1.canWrite());
        System.out.println("获取文件的名字:" + f1.getName());
        System.out.println("获取该文件的上级目录:" + f1.getParent());
        System.out.println("是否是一个目录:" + f1.isDirectory());
        System.out.println("是否是一个文件:" + f1.isFile());
        System.out.println("是否隐藏:" + f1.isHidden());
        System.out.println("获取文件大小:" + f1.length() );
        System.out.println("是否存在:" + f1.exists());

        //文件路径
        System.out.println("绝对路径:"+f1.getAbsolutePath());
        System.out.println("相对路径:"+f1.getPath());
        System.out.println("toString:"+f1.toString());

        File f5 = new File("demo.txt");
        if(!f5.exists()) {
            f5.createNewFile();
        }
        System.out.println("-------------------------------");
        // 绝对路径 指的就是 真实的一个精准的完整的路径
        System.out.println("绝对路径:" + f5.getAbsolutePath());
        // 相对路径 有一个参照物,相对于这个参照物的路径
        // 在main方法中,相对位置指的就是:c:\work\bluemsun\IO\TestDemo.txt
        System.out.println("相对路径:" + f5.getPath());
        // toString的效果永远是 相对路径
        System.out.println("toString:" + f5.toString());

        System.out.println("-------------------------------");
        File f6 = new File("\\a\\b\\c\\demo.txt");
        System.out.println("绝对路径:" + f6.getAbsolutePath());
        System.out.println("相对路径:" + f6.getPath());
    }
}
import java.io.File;
import java.io.IOException;

public class Test02 {
    public static void main(String[] args) throws IOException {
        //将目录封装为一个File类的对象
        File f1 = new File("C:\\work\\bluemsun\\IO\\demo");

        //常用方法
        System.out.println("文件是否可读:" + f1.canRead());
        System.out.println("文件是否可写:" + f1.canWrite());
        System.out.println("获取文件的名字:" + f1.getName());
        System.out.println("获取该文件的上级目录:" + f1.getParent());
        System.out.println("是否是一个目录:" + f1.isDirectory());
        System.out.println("是否是一个文件:" + f1.isFile());
        System.out.println("是否隐藏:" + f1.isHidden());
        System.out.println("获取文件大小:" + f1.length() );
        System.out.println("是否存在:" + f1.exists());
        
        System.out.println("绝对路径:"+f1.getAbsolutePath());
        System.out.println("相对路径:"+f1.getPath());
        System.out.println("toString:"+f1.toString());
        
        //目录相关方法
        //创建多层目录
        /**
         * 删除目录时只删除一次,并且要求本层目录为空,如果有内容子不会被删除
         */
        File f2 = new File("C:\\work\\bluemsun\\IO\\demo\\a\\b\\c");
        
        f2.delete();
        
        String[] fileList = f1.list();
        /**
         * 获取目录下文件名或文件夹名
         */
        for (String s: fileList){
            System.out.println(s);
        }
        System.out.println("--------------------------------------");
        File[] files = f1.listFiles();
        /**
         * 将文件或者文件夹也封装到File对象里
         */
        for (File file: files){
            System.out.println(file.getName());
            System.out.println(file.getAbsolutePath());
        }
    }
}

   1. File类主要是JAVA为文件这块的操作(如删除、新增等)而设计的相关类

   2. File类的包名是java.io,其实现了Serializable, Comparable两大接口以便于其对象可序列化和比较

下面我们正式引入:IO流
I/O : Input/Output的缩写,用于处理设备之间的数据的传输。
形象理解:IO流 当做一根 “管”:

在这里插入图片描述

 

在这里插入图片描述

处理流,也叫包装流,是在“连接”已经存在的流(节点流或者处理流)之上,为程序提供强大的读写功能,更加灵活。如BufferedReader,BufferedWriter。

 在这里插入图片描述

 

一、两者的组成不同:
1、字节流的组成:字节流是由字节组成的。
2、字符流的

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值