木舟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);
        }
    }
相关推荐
<有心人>几秒前
vue使用axios请求后端数据
java·前端·javascript·vue.js
HKElec3 分钟前
FreeRTOS学习笔记>信号量
笔记·学习
夜月行者1 小时前
如何使用ssm实现基于Vue框架的订餐系统+vue
java·后端·ssm
IT 青年1 小时前
Leetcode JAVA刷刷站(69)x的平方根
java·算法·leetcode
D@.1 小时前
2024年Intellij IDEA快捷键总结
java·ide·intellij-idea
点燃大海1 小时前
通过Spring Boot创建项目
java·spring boot·maven·intellij-idea
lin zaixi()1 小时前
埃筛C++写法
开发语言·c++
Yasen.M1 小时前
流体中的流线【StreamLines】的实现
开发语言·python·manim·manim动画·python动画·数学演示
Qzer_4072 小时前
JVM(Java Virtual Machine,Java虚拟机)
java·开发语言·jvm
楚肽生物--多肽合成定制2 小时前
多肽固相合成--基本原理&流程
学习