木舟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);
        }
    }
相关推荐
缘来是庄2 分钟前
设计模式之中介者模式
java·设计模式·中介者模式
源代码•宸10 分钟前
C++高频知识点(二)
开发语言·c++·经验分享
rebel31 分钟前
若依框架整合 CXF 实现 WebService 改造流程(后端)
java·后端
你怎么知道我是队长34 分钟前
python-input内置函数
开发语言·python
X_StarX1 小时前
【Unity笔记02】订阅事件-自动开门
笔记·学习·unity·游戏引擎·游戏开发·大学生
MingYue_SSS1 小时前
开关电源抄板学习
经验分享·笔记·嵌入式硬件·学习
weixin_437398211 小时前
转Go学习笔记(2)进阶
服务器·笔记·后端·学习·架构·golang
jyan_敬言2 小时前
【C++】string类(二)相关接口介绍及其使用
android·开发语言·c++·青少年编程·visual studio
代码的余温2 小时前
5种高效解决Maven依赖冲突的方法
java·maven
慕y2742 小时前
Java学习第十六部分——JUnit框架
java·开发语言·学习