借助File类了解文件的内在美 | 带你学《Java语言高级特性》之四十八

简介: 前几节中我们了解了如何进行文件级的相关操作,现在让我们走进文件,借助File类提供的其他方法,了解文件的内部信息吧。

上一篇:深入了解File类,勘破文件操作 | 带你学《Java语言高级特性》之四十七
前几节中我们了解了如何进行文件级的相关操作,现在让我们走进文件,借助File类提供的其他方法,了解文件的内部信息吧。

【本节目标】
通过阅读本节内容,你将结合具体代码,实操File类的各种获取文件信息的方法,了解可以通过File类获取到哪些信息,初步掌握文件内部信息的获取方式。

获取文件信息

除了可以进行文件的操作之外,也可以通过File类来获取一些文件本身提供的信息,可以获取如下内容:

  • 文件是否可读:public boolean canRead();
  • 文件是否可写:public boolean canWrite();
  • 获取文件长度:public long length(),该方法返回的是long数据类型,字节长度;
  • 最后一次修改日期时间:public long lastModified();
  • 判读是否是目录:public boolean isDirectory();
  • 判断是否是文件:public boolean isFile();
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
class MathUtil {
    private MathUtil() {}
    public static double round(double num, int scale) {
        return Math.round(Math.pow(10, scale) * num) / Math.pow(10, scale);
    }
}

public class JavaAPIDemo {
    public static void main(String[] args) {
        File file = new File("d:"+ File.separator + "my.jpg");
        System.out.println("文件是否可读:" + file.canRead());  //true
        System.out.println("文件是否可写:" + file.canWrite());  //true
        System.out.println("文件大小:" + MathUtil.round(file.length() / (double) 1024 / 1024,2));  //文件大小:16.16
        System.out.println("最后的修改时间:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(file.lastModified())));
        System.out.println("是目录吗?"+file.isDirectory());  //false
        System.out.println("是文件吗?"+file.isFile());    //true
    }
}

既然可以判断给定的路径是文件还是目录,那么就可以进一步的判断,如果发现是目录,则应该列出目录中的全部内容。

  • 列出目录内容:public File[] listFiles();
import java.io.File;
public class JavaAPIDemo {
    public static void main(String[] args){
        File file = new File("d:"+ File.separator);
        if(file.isDirectory()){    //当前是一个目录
            File result []=file.listFiles();  //列出目录中的全部内容
            for (int x = 0 ;x < result.length; x ++){
                System.out.println(result[x]);
            }
        }
    }
}

这些信息的获得都是文件或目录本身的操作,都不涉及到文件内容的处理。

想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:教你使用File类列出目录所有文件 | 带你学《Java语言高级特性》之四十九
更多Java面向对象编程文章查看此处

相关文章
|
10天前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
69 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
1天前
|
存储 监控 算法
探秘局域网桌面监控:深入剖析 Java 语言核心算法
在数字化办公时代,局域网桌面监控如同企业的“智慧鹰眼”,确保工作效率与数据安全。本文以Java为载体,揭示哈希表在监控中的关键应用。通过高效的数据结构和算法,哈希表能快速索引设备连接信息,大幅提升监控的时效性和响应速度。代码示例展示了如何用Java实现设备网络连接监控,结合未来技术如AI、大数据,展望更智能的监控体系,助力企业在数字化浪潮中稳健前行。
|
2月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
165 57
|
1月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
88 34
|
17天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
68 8
|
Java
java读写file
private static String encoding = "utf-8"; public static void readTxt(String filePath) throws IOException { File file = new File(filePath); if (file.
800 0
|
5天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
43 17
|
15天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者