木舟0基础学习Java的第十七天(File类使用,IO流)

File类(路径):文件路径 文件夹路径

路径:

1.绝对路径 :固定的路径 从盘符开始

2.相对路径:相对于某个位置 指当前项目下

创建功能:

java 复制代码
File f=new File("e:/a.txt");
        try {
            boolean b1 = f.createNewFile();//新建文件
            System.out.println(b1);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        System.out.println(f);//重写了toString()
java 复制代码
     //根据一个目录和一个子文件(子目录)得到一个File对象 必须要有abc这个文件夹
        File f=new File("e:/abc","b.txt");
        try {
            boolean b = f.createNewFile();
            System.out.println(b);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        System.out.println(f);
    }
java 复制代码
 //在e盘下创建一个ddd文件夹
        File f=new File("e:/ddd");
        boolean b = f.mkdir();//如果存在ddd文件夹就不创建 不存在就创建一个ddd文件夹
        System.out.println(b);//true

        File f1=new File(f,"ccc.txt");//在ddd文件夹下创建ccc文件
        try {
            boolean b1 = f1.createNewFile();
            System.out.println(b1);//true
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
java 复制代码
 //创建一个含有子目录的目录
        File f=new File("e:/com/muzhou/test");
        boolean b = f.mkdirs();
        System.out.println(b);//true

重命名功能:

(注意:如果路径名相同就是改名 如果路径名不同就是改名并剪切-粘贴)

java 复制代码
        File f=new File("e:/abc/a.txt");
        File newf=new File("e:/abc/aaa.txt");
        boolean b = f.renameTo(newf);//给文件重命名
        System.out.println(b);//true
java 复制代码
        File f=new File("e:/abc");
        boolean b = f.renameTo(new File("e:/cba"));//给文件夹重命名
        System.out.println(b);//true

删除功能:

(注意:不走垃圾回收站 永久删除)

java 复制代码
 File f=new File("e:/cba");
        //如果该目录下有子文件 要先删除子文件才能删除目录
        boolean b = f.delete();//删除目录
        System.out.println(b);//false

判断功能:

java 复制代码
 File f=new File("e:/cba");
        System.out.println(f.isDirectory());//判断文件夹
        System.out.println(f.isFile());//判断文件

        File f1=new File("e:/a.txt");
        System.out.println(f1.exists());//是否存在
        System.out.println(f1.canRead());//是否可读
        System.out.println(f1.canWrite());//是否可写
        System.out.println(f1.isHidden());//是否隐藏

获取功能:

java 复制代码
 //获取绝对路径(带盘符)
        File f1=new File("e:/cba/b.txt");
        String path = f1.getAbsolutePath();//获取绝对路径(带盘符)
        System.out.println("绝对路径"+path);//e:\cba\b.txt
        File f2=new File("ccc.txt");
        String p = f2.getAbsolutePath();
        System.out.println(p);//E:\job\IO7.12\ccc.txt


        System.out.println("相对路径"+f2.getPath());//ccc.txt 获取相对路径(不带盘符) 相对于当前项目所在的路径
        System.out.println("文件名"+f2.getName());//文件名ccc.txt
        System.out.println("文件的字节长度"+f1.length());//文件的字节长度8
        System.out.println("最后一次被修改的时间"+f1.lastModified());//最后一次被修改的时间1720834772391 毫秒值
        long time=f1.lastModified();
        Date d=new Date(time);
        System.out.println(d);//Sat Jul 13 09:39:32 CST 2024

获取数组:

java 复制代码
  //获取指定目录下所有文件或者文件夹的名称数组
        File f=new File("e:/cba");
        String[] list = f.list();
        for (String s : list) {
            System.out.println(s);
        }
        //获取File数组
        File[] files=f.listFiles();
        for (File file : files) {
            System.out.println("获取文件的名称"+file.getName()+"获取文件最后一次被修改的时间"+
                    new Date(file.lastModified()));
        }

开发中建议使用

java 复制代码
  File f=new File("e:/cba");
        File[] files=f.listFiles();
        for(int i=0;i<files.length;i++){
            File ff=files[i];
            if(ff.getName().endsWith("txt")){
                System.out.println("文件名"+ff.getName()+"路径"+ff.getAbsolutePath());
            }
        }

递归:(自己调自己)不建议使用

java 复制代码
 public static void main(String[] args) {
        File f=new File("e:/");
        getFile(f);
    }
    public static void getFile(File f){
        //用递归深入目录下多层子目录搜索文件
        File[] files=f.listFiles();
        for (int i = 0; i <files.length ; i++) {
            File ff=files[i];
            if(ff.isDirectory()){
                getFile(ff);//如果是目录就再进 getFile() 继续调用
            }else{
            //如果是文件
            if(ff.getName().endsWith("txt")){
                System.out.println("文件名"+ff.getName()+"路径"+ff.getAbsolutePath());
            }
            }
        }
    }

Windows系统 支持/ 也支持\

Linux系统 只支持/

开发中尽量用/ 即可跨平台

创建文件(文件夹)

如果不写盘符文件(夹)就会创建在项目下(相对路径)

IO流

概述:

1.IO 流用来处理设备之间的数据传输

2.Java 用于操作流的类都在IO包中

3.Java 对数据的操作是通过流的方式

流按流向分为两种:1.输入流 2.输出流
流按操作类型分为两种:1.字节流 2.字符流

字节流: 可以操作任何数据,在计算机中任何数据都是以字节的形式存储的

字符流: 字符流只能操作字符(文本)数据 比较方便

IO流常用的父类

字节流的抽象父类:InputStream OutputStream

字符流的抽象父类:Reader Writer

注意:使用的时候处理异常

java 复制代码
 public static void main(String[] args) {
        try {
            FileInputStream fi=new FileInputStream("e:/a.txt");
            int read = fi.read();
            
            System.out.println((char)read);//read()方法 每次读一个字节 会把字节byte类型提升为int类型

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
相关推荐
q***33371 小时前
oracle 12c查看执行过的sql及当前正在执行的sql
java·sql·oracle
小奶包他干奶奶3 小时前
Webpack学习——Loader(文件转换器)
前端·学习·webpack
小奶包他干奶奶3 小时前
Webpack学习——原理理解
学习·webpack·devops
励志成为美貌才华为一体的女子3 小时前
强化学习PPO和GRPO逻辑学习
学习
tobebetter95273 小时前
How to manage python versions on windows
开发语言·windows·python
meichaoWen4 小时前
【Vue3】vue3的全面学习(一)
前端·javascript·学习
FFF团团员9094 小时前
树莓派学习笔记3:LED和Button
笔记·学习
Y***h1874 小时前
第二章 Spring中的Bean
java·后端·spring
9***P3344 小时前
PHP代码覆盖率
开发语言·php·代码覆盖率
8***29314 小时前
解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域
java·前端·spring