JAVA零基础小白入门上手教程day15-泛型&File(三)

简介: JAVA零基础小白入门上手教程day15-泛型&File

JAVA零基础小白入门上手教程day15-泛型&File(二)https://developer.aliyun.com/article/1433761


获取功能方法

方法名 说明
public String getAbsolutePath() 返回此File的绝对路径名字符串。
public String getPath() 将此File转换为路径名字符串
public String getName() 返回由此File表示的文件或目录的名称。
public long length() 返回由此File表示的文件的长度。

代码演示

public class FileGet {
    public static void main(String[] args) {
        File f = new File("d:/aaa/bbb.java");     
        System.out.println("文件绝对路径:"+f.getAbsolutePath());
        System.out.println("文件路径:"+f.getPath());
        System.out.println("文件名称:"+f.getName());
        System.out.println("文件长度:"+f.length()+"字节");
        File f2 = new File("d:/aaa");     
        System.out.println("目录绝对路径:"+f2.getAbsolutePath());
        System.out.println("目录构造路径:"+f2.getPath());
        System.out.println("目录名称:"+f2.getName());
        System.out.println("目录长度:"+f2.length());
    }
}

绝对路径和相对路径

  • 绝对路径:从盘符开始的路径,这是一个完整的路径。
  • 相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。
public class FilePath {
    public static void main(String[] args) {
        // D盘下的bbb.java文件
        File f = new File("D:\\bbb.java");
        System.out.println(f.getAbsolutePath());
    // 项目下的bbb.java文件
        File f2 = new File("day15\\bbb.java");
        System.out.println(f2.getAbsolutePath());
    }
}

判断功能的方法

方法名 说明
public boolean exists() 此File表示的文件或目录是否实际存在。
public boolean isDirectory() 此File表示的是否为目录。

代码演示

public class FileIs {
    public static void main(String[] args) {
        File file1 = new File("a.txt");
        System.out.println("是不是一个目录:"+file1.isDirectory());
        System.out.println("是不是一个文件:"+file1.isFile());
        System.out.println("是否能写:"+file1.canWrite());
        System.out.println("是否能读:"+file1.canRead());
        System.out.println("是否存在:"+file1.exists());
        System.out.println("是隐藏:"+file1.isHidden());
    }
}

创建&删除功能的方法

方法名 说明
public boolean createNewFile() 当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
public boolean delete() 删除由此File表示的文件或目录。
public boolean mkdir() 创建由此File表示的目录。
public boolean mkdirs() 创建由此File表示的目录,包括任何必需但不存在的父目录。

代码演示

public class FileCreateDelete {
    public static void main(String[] args) throws IOException {
        //项目的根目录下
        File file1 = new File("a.txt");
        System.out.println(file1.createNewFile());
        //删除文件
        File file2 = new File("a.txt");
        System.out.println(file2.delete());
        //创建文件夹
        File file3 = new File("aa");
        System.out.println( file3.mkdir());
        //删除文件夹
        File file4 = new File("aa");
        System.out.println(file4.delete());
        //创建多级文件夹
        File file5 = new File("aa\\bb\\cc");
        System.out.println( file5.mkdirs());
        //删除多级文件夹
        //注意:只能删除最里的一级目录
        File file6 = new File("aa\\bb\\cc");
        System.out.println(file6.delete());
    }
}

注意事项

delete方法,如果此File表示目录,则目录必须为空才能删除。(如果要删除目录,目录中不能有文件,否则删不了)

重命名功能

/*
 * 重命名功能:public boolean renameTo(File dest)
 *        如果路径名相同,就是改名。
 *        如果路径名不同,就是改名并剪切。
 *
 * 路径以盘符开始:绝对路径    c:\\a.txt
 * 路径不以盘符开始:相对路径   a.txt
 */
public static void main(String[] args) throws IOException {
        //数据数据源,前提得这个数据存在
        File srcFile = new File("D:\\江一燕.jpg");
        //数据数据的目的地
        File newFile = new File("D:\\我和江一燕.jpg");//相同路径是改名
        // File newFile2 = new File("e:\\我和江一燕.jpg");//不同路径是剪切并改名
        //实现改名
        System.out.println(srcFile.renameTo(newFile));
    }
}

目录的获取

方法名 说明
public String[] list() 返回一个String数组,表示该File目录中的所有子文件或目录。
public File[] listFiles() 返回一个File数组,表示该File目录中的所有的子文件或目录。
public class FileFor {
    public static void main(String[] args) {
        //创建file
        File file = new File("d:\\");
        //获取e盘下所有的文件及目录
        String[] list = file.list();
        for(String s : list){
            System.out.println(s);
        }
        System.out.println("------------------");
        //创建file
        File file2 = new File("d:\\");
        //获取e盘下的所有file文件
        File[] files = file2.listFiles();
        for(File f : files){
            System.out.println(f);
        }
    }
}

注意事项

调用listFiles方法的File对象,表示的必须是实际存在的目录,否则返回null,无法进行遍历。

作业:判断d盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称

思路:获取d盘下所有目录,判断目录下是文件还是目录,如果文件,判断哪个文件后缀.jpg,如果是,把文件名输出。

综合案例

打印多级目录

  • 分析

多级目录的打印,就是当目录的嵌套。遍历之前,无从知道到底有多少级目录,所以我们还是要使用递归实现。

  • 代码实现
public class DiGuiDemo2 {
    public static void main(String[] args) {
        // 创建File对象
        File dir  = new File("E:\workspase\507\day13");
        // 调用打印目录方法
        printDir(dir);
    }
    public static void  printDir(File dir) {
        // 获取子文件和目录
        File[] files = dir.listFiles();
        // 循环打印
        /*
          判断:
          当是文件时,打印绝对路径.
          当是目录时,继续调用打印目录的方法,形成递归调用.
        */
        for (File file : files) {
        // 判断
            if (file.isFile()) {
                // 是文件,输出文件绝对路径
                System.out.println("文件名:"+ file.getAbsolutePath());
            } else {
                // 是目录,输出目录绝对路径
                System.out.println("目录:"+file.getAbsolutePath());
                // 继续遍历,调用printDir,形成递归
                printDir(file);
            }
        }
    }
}

文件搜索

  • 需求

搜索D:\aaa 目录中的.java 文件。

  • 需求分析

目录搜索,无法判断多少级目录,所以使用递归,遍历所有目录。

遍历目录时,获取的子文件,通过文件名称的后缀,判断是否符合条件。

  • 代码实现
public class DiGuiDemo3 {
    public static void main(String[] args) {
        // 创建File对象
        File dir  = new File("D:\\aaa");
        // 调用打印目录方法
        printDir(dir);
    }
    public static void printDir(File dir) {
        // 获取子文件和目录
        File[] files = dir.listFiles();
        // 循环打印
        for (File file : files) {
            if (file.isFile()) {
                // 是文件,判断文件名并输出文件绝对路径
                if (file.getName().endsWith(".java")) {
                    System.out.println("文件名:" + file.getAbsolutePath());
                }
            } else {
                // 是目录,继续遍历,形成递归
                printDir(file);
            }
        }
    }
}


目录
相关文章
|
8天前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
14天前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
17天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
20天前
|
存储 安全 Java
🌟Java零基础-反序列化:从入门到精通
【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
57 5
|
17天前
|
安全 Java 调度
Java中的多线程编程入门
【10月更文挑战第29天】在Java的世界中,多线程就像是一场精心编排的交响乐。每个线程都是乐团中的一个乐手,他们各自演奏着自己的部分,却又和谐地共同完成整场演出。本文将带你走进Java多线程的世界,让你从零基础到能够编写基本的多线程程序。
29 1
|
17天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
17天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
|
20天前
|
Java 编译器 Maven
Java“class file contains wrong class”解决
当Java程序运行时出现“class file contains wrong class”错误,通常是因为类文件与预期的类名不匹配。解决方法包括:1. 确保类名和文件名一致;2. 清理并重新编译项目;3. 检查包声明是否正确。
|
Java 数据库 容器
|
12天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。