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);
            }
        }
    }
}


目录
相关文章
|
2天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
16天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
89 26
|
25天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
46 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
21天前
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
23天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
23天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
1月前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
32 2
|
1月前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
22天前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
40 0
|
1月前
|
Java 程序员 数据库连接
Java中的异常处理:从入门到精通
在Java编程的海洋中,异常处理是一艘不可或缺的救生艇。它不仅保护你的代码免受错误数据的侵袭,还能确保用户体验的平稳航行。本文将带你领略异常处理的风浪,让你学会如何在Java中捕捉、处理和预防异常,从而成为一名真正的Java航海家。