24、JAVA进阶——File类

简介: 24、JAVA进阶——File类

(1)在Java程序中通过使用java.io包提供的一些接口和类,对计算机中的文件进行基本的操作,包括对文件和目录属性的操作、对文件读写的操作。


(2)File对象既可以表示文件,也可以表示目录,在程序中一个File对象可以代表一个文件或目录。


(3)利用File类可以来对文件或目录进行基本操作。它可以查出与文件相关的信息,如名称、最后修改日期、文件大小等。

public static void main(String[] args) {
  // 创建File类对象,该对象指向F盘中a.txt文件和demo目录(文件夹)
  File file1 = new File("F:\\a.txt");
  File file2 = new File("F:/demo");
  // 通过File类对象调用方法获取文件或者目录的属性
  // boolean exists() 测试此抽象路径名表示的文件或目录是否存在。
  boolean result1 = file1.exists();
  System.out.println("file1指向的文件存在:" + result1);
  System.out.println("file2指向的目录存在:" + file2.exists());
  // boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。
  // boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。
  System.out.println("file1对象指向的是一个文件:"+file1.isFile());
  System.out.println("file1对象指向的是一个目录:"+file1.isDirectory());
  System.out.println("file2对象指向的是一个文件:"+file2.isFile());
  System.out.println("file2对象指向的是一个目录:"+file2.isDirectory());
  // String getName() 返回由此抽象路径名表示的文件或目录的名称。 
  System.out.println("file1对象指向的文件名:"+file1.getName());
  System.out.println("file2对象指向的目录名:"+file2.getName());
  // long length()返回由此抽象路径名表示的文件的长度 ,返回的结果值是一个大概值,是不确定的
  System.out.println("file1对象指向的文件的长度:"+file1.length());
  }

(4)File类的常用构造方法如下所示:


构造方法摘要

File(File parent, String child)
         根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。


File(String pathname)

         通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。


File(String parent, String child)

         根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

File(URI uri)

         通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。


(5)File类的常用方法如下所示:


方法摘要
 boolean canRead()
         测试应用程序是否可以读取此抽象路径名表示的文件。
boolean canWrite()
         测试应用程序是否可以修改此抽象路径名表示的文件。
 int compareTo(File pathname)
         按字母顺序比较两个抽象路径名。
 boolean createNewFile()
          当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
static File createTempFile(String prefix, String suffix)
         在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
static File createTempFile(String prefix, String suffix, File directory)
          在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
boolean delete()
          删除此抽象路径名表示的文件或目录。
 void deleteOnExit()
         在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
 boolean equals(Object obj)
         测试此抽象路径名与给定对象是否相等。
 boolean exists()
          测试此抽象路径名表示的文件或目录是否存在
 File getAbsoluteFile()
          返回此抽象路径名的绝对路径名形式。
 String getAbsolutePath()
          返回此抽象路径名的绝对路径名字符串。
File getCanonicalFile()
         返回此抽象路径名的规范形式。
String getCanonicalPath()
         返回此抽象路径名的规范路径名字符串。
long getFreeSpace()
         返回此抽象路径名指定的分区中未分配的字节数。
 String getName()
          返回由此抽象路径名表示的文件或目录的名称。
String getParent()
         返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null
File getParentFile()
         返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null
String getPath()
         将此抽象路径名转换为一个路径名字符串。
 long getTotalSpace()
         返回此抽象路径名指定的分区大小。
 long getUsableSpace()
         返回此抽象路径名指定的分区上可用于此虚拟机的字节数。
 int hashCode()
         计算此抽象路径名的哈希码。
 boolean isAbsolute()
         测试此抽象路径名是否为绝对路径名。
 boolean isDirectory()
         测试此抽象路径名表示的文件是否是一个目录
 boolean isFile()
         测试此抽象路径名表示的文件是否是一个标准文件。
 boolean isHidden()
         测试此抽象路径名指定的文件是否是一个隐藏文件。
 long lastModified()
         返回此抽象路径名表示的文件最后一次被修改的时间。
 long length()
      
    返回由此抽象路径名表示的文件的长度。
String[] list()
         返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
String[] list(FilenameFilter filter)
         返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
File[] listFiles()
         返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
File[] listFiles(FileFilter filter)
         返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
File[] listFiles(FilenameFilter filter)
         返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
static File[] listRoots()
         列出可用的文件系统根。
 boolean mkdir()
          创建此抽象路径名指定的目录。
 boolean setExecutable(boolean executable)
         设置此抽象路径名所有者执行权限的一个便捷方法。
 boolean setExecutable(boolean executable, boolean ownerOnly)
         设置此抽象路径名的所有者或所有用户的执行权限。
 boolean setLastModified(long time)
         设置此抽象路径名指定的文件或目录的最后一次修改时间。
 boolean setReadable(boolean readable)
         设置此抽象路径名所有者读权限的一个便捷方法。
 boolean setReadable(boolean readable, boolean ownerOnly)
         设置此抽象路径名的所有者或所有用户的读权限。
 boolean setReadOnly()
         标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。
 boolean setWritable(boolean writable)
         设置此抽象路径名所有者写权限的一个便捷方法。
 boolean setWritable(boolean writable, boolean ownerOnly)
         设置此抽象路径名的所有者或所有用户的写权限。
String toString()
         返回此抽象路径名的路径名字符串。
URI toURI()
         构造一个表示此抽象路径名的 file: URI。


(5)案例


       1)、文件删除和创建

public static void main(String[] args) throws IOException {
  File file1 = new File("F:/b.txt");
  //如果file1对象指向的文件不存在,就创建file1对象指向的文件
  if(!file1.exists()){
    // boolean createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
    file1.createNewFile();
    System.out.println("文件创建成功");
  }else{
    //boolean delete() 删除此抽象路径名表示的文件或目录。 
    file1.delete();
    System.out.println("文件删除成功");
  }
  }



       2)、文件目录的删除和创建


public static void main(String[] args) {
  File file1 = new File("F:test");
  //如果file1指向的目录不存在,就创建目录,如果目录存在,就删除这个目录
  if(file1.exists()){
    file1.delete();
    System.out.println("目录删除成功");
  }else{
    // boolean mkdir() 创建此抽象路径名指定的目录。 
    file1.mkdir();
    System.out.println("目录创建成功");
  }
  File file2 = new File("F:/a/b/c/d");
  //boolean mkdirs()  创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 
  boolean result =file2.mkdirs();
  System.out.println("file2对象指向的目录创建成功:"+result);
  }


       3)、返回路径和绝对路径


  public static void main(String[] args) throws IOException {
    File file1 = new File("test.txt");
    file1.createNewFile();
    // String getPath() 将此抽象路径名转换为一个路径名字符串。 
    String path =file1.getPath();
    System.out.println(path);//absolutePath
    //String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。 
    String absolutePath=file1.getAbsolutePath();
    System.out.println(absolutePath);//E:\MyEclipseWorkspaces03\Day23输入输出\test.txt
  }




相关文章
|
12天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
36 17
|
4天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
8天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
41 4
|
9天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
20 2
|
13天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
14天前
|
Java 编译器 Maven
Java“class file contains wrong class”解决
当Java程序运行时出现“class file contains wrong class”错误,通常是因为类文件与预期的类名不匹配。解决方法包括:1. 确保类名和文件名一致;2. 清理并重新编译项目;3. 检查包声明是否正确。
|
17天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
17天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
17天前
|
存储 Java 编译器
java wrapper是什么类
【10月更文挑战第16天】
21 3
|
20天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
21 5