Java中File类方法详解以及实践

yizhihongxing

Java中File类方法详解以及实践

介绍

Java中的File类用于描述操作系统文件和目录的抽象。File类无法实现文件内容的操作,但是可以获取或修改文件的属性信息和路径信息。File类提供了很多方法,涵盖了文件和目录常见的操作,本文将对Java中File类常用的方法做一个详细讲解,并提供几个实例演示。

构造函数

File类的构造函数有多个重载形式,提供不同的参数类型,以支持不同的文件路径形式和容错处理。

public File(String pathname);
public File(String parent, String child);
public File(File parent, String child);

参数解释:

  • pathname:文件路径。
  • parent:父目录。
  • child:自文件或目录。

示例:

// 以字符串形式指定文件路径
File file1 = new File("D:\\test\\test.txt");
// 以父目录和文件名的字符串形式指定文件路径
File file2 = new File("D:\\test", "test.txt");
// 以父目录和文件名的File对象形式指定文件路径
File file3Parent = new File("D:\\test");
File file3 = new File(file3Parent, "test.txt");

常用方法

File类提供了很多方法用于操作文件和目录,以下是常用的几个。

获取文件路径

public String getAbsolutePath();
public String getPath();
public String getParent();
public File getAbsoluteFile();
public File getParentFile();

参数解释:

  • getAbsolutePath:返回文件的绝对路径字符串。
  • getPath:返回文件的路径字符串。
  • getParent:返回文件的父目录路径字符串。
  • getAbsoluteFile:返回文件的绝对路径File对象。
  • getParentFile:返回文件的父目录File对象。

示例:

File file = new File("D:\\test\\test.txt");
System.out.println("getAbsolutePath:" + file.getAbsolutePath());
System.out.println("getPath:" + file.getPath());
System.out.println("getParent:" + file.getParent());
System.out.println("getAbsoluteFile:" + file.getAbsoluteFile());
System.out.println("getParentFile:" + file.getParentFile());

输出结果:

getAbsolutePath:D:\test\test.txt
getPath:D:\test\test.txt
getParent:D:\test
getAbsoluteFile:D:\test\test.txt
getParentFile:D:\test

检查文件状态

public boolean exists();
public boolean isFile();
public boolean isDirectory();
public boolean canRead();
public boolean canWrite();
public boolean canExecute();

参数解释:

  • exists:文件或目录是否存在。
  • isFile:是否是文件。
  • isDirectory:是否是目录。
  • canRead:是否可读。
  • canWrite:是否可写。
  • canExecute:是否可执行。

示例:

File file = new File("D:\\test\\jmeter.png");
System.out.println("exists:" + file.exists());
System.out.println("isFile:" + file.isFile());
System.out.println("isDirectory:" + file.isDirectory());
System.out.println("canRead:" + file.canRead());
System.out.println("canWrite:" + file.canWrite());
System.out.println("canExecute:" + file.canExecute());

输出结果:

exists:true
isFile:true
isDirectory:false
canRead:true
canWrite:true
canExecute:false

文件操作

public boolean createNewFile();
public boolean delete();
public boolean renameTo(File dest);
public long length();
public boolean setLastModified(long time);
public boolean setReadOnly();

参数解释:

  • createNewFile:创建新文件,如果文件已存在会返回false。
  • delete:删除文件或目录。
  • renameTo:重命名文件或目录。
  • length:获取文件长度。
  • setLastModified:设置文件最后修改时间,参数是时间戳。
  • setReadOnly:设置文件只读。

示例:

// 创建文件
File file = new File("D:\\test\\test.txt");
try {
    file.createNewFile();
} catch (IOException e) {
    e.printStackTrace();
}

// 重命名文件
File newFile = new File("D:\\test\\new_test.txt");
file.renameTo(newFile);

// 获取文件长度
System.out.println(file.length());

// 设置只读
newFile.setReadOnly();

目录操作

public boolean mkdir();
public boolean mkdirs();
public String[] list();
public File[] listFiles();

参数解释:

  • mkdir:创建目录,只能创建单个目录,如果父目录不存在,会抛出异常。
  • mkdirs:创建目录,能够创建多级目录。
  • list:列出目录中的文件和子目录名称数组。
  • listFiles:列出目录中的文件和子目录File对象数组。

示例:

// 创建目录
File dir = new File("D:\\test\\dir");
dir.mkdir();

// 创建多级目录
File multiDir = new File("D:\\test\\multi\\dir");
multiDir.mkdirs();

// 列出文件和子目录名称
File[] files = dir.listFiles();
for (File f : files) {
    System.out.println(f.getName());
}

示例

以下是两个示例,一个是利用File类保存数据,另一个是利用File类读取数据。

保存数据

import java.io.*;

public class SaveToFile {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\\test\\data.txt");
        if (!file.exists()) {
            file.createNewFile();
        }

        FileWriter writer = new FileWriter(file);
        BufferedWriter bWriter = new BufferedWriter(writer);

        bWriter.write("hello world!");

        bWriter.close();
        writer.close();
    }
}

执行后会在D:\test目录下生成一个data.txt文件,文件内容为hello world!。

读取数据

import java.io.*;

public class ReadFromFile {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\\test\\data.txt");
        if (!file.exists()) {
            return;
        }

        FileReader reader = new FileReader(file);
        BufferedReader bReader = new BufferedReader(reader);

        String line = bReader.readLine();
        System.out.println(line);

        bReader.close();
        reader.close();
    }
}

执行后会从D:\test\data.txt文件中读取并输出hello world!。

总结

本文介绍了Java中File类的常用方法,包括构造函数、获取文件路径、检查文件状态、文件操作、目录操作等。并提供了两个示例演示如何利用File类实现数据保存和读取操作。使用File类可以轻松对文件和目录进行管理和操作,是Java IO编程不可或缺的一部分。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中File类方法详解以及实践 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • springboot数据库密码加密的配置方法

    当我们在使用SpringBoot开发项目中,经常需要对数据库的密码进行加密,以保障密码信息的安全。下面是一份完整的攻略,讲解了使用SpringBoot 加密数据库密码的配置方法。 第一步:依赖 在pom.xml中添加如下模块依赖: <dependency> <groupId>com.ulisesbocchio</groupId&…

    Java 2023年5月19日
    00
  • Maven中dependency和plugins的继承与约束

    Maven 中的 dependency 和 plugins 的继承和约束机制是 Maven 中非常重要的一部分,它能够让开发者更加方便地管理项目的依赖和构建过程。在 Maven 中,我们可以通过使用 dependencyManagement 和 pluginManagement 元素来实现依赖和插件的继承和约束。 一、dependency 的继承与约束 继承…

    Java 2023年5月19日
    00
  • 如何通过Java代码实现KMP算法

    下面我将为你讲解“如何通过Java代码实现KMP算法”的完整攻略。 1. 什么是KMP算法? KMP算法是一种字符串匹配算法,其全称是Knuth-Morris-Pratt算法,其主要思想是在匹配过程中充分利用已知信息,尽可能地减少比较次数,从而达到快速匹配的目的。 2. KMP算法的实现过程 2.1 计算字符串的next数组 在KMP算法中,关键在于如何计算…

    Java 2023年5月18日
    00
  • SpringBoot自动配置源码深入刨析讲解

    SpringBoot自动配置源码深入刨析讲解 SpringBoot自动配置是SpringBoot所提供的最为强大的功能之一。通过自动配置,我们可以很轻松地配置Spring应用程序,并且省去了很多配置的烦恼。 SpringBoot自动配置源码其实并不神秘,只要我们深入掌握其实现原理,就可以灵活地使用和定制自己的配置。 SpringBoot自动配置原理 Spri…

    Java 2023年5月15日
    00
  • Spring Security+Spring Data Jpa如何进行安全管理

    “Spring Security+Spring Data Jpa如何进行安全管理”的攻略如下: 1. 概述 Spring Security是一个为基于Spring的应用程序提供安全性支持的框架。它的主要功能是身份验证、授权、防止跨站点请求伪造(CSRF),以及管理基于URL的身份验证等。 Spring Data Jpa是对JPA规范的实现。它提供了一种将实体…

    Java 2023年5月19日
    00
  • Java中拼接字符串String的N种方法总结

    下面我将详细讲解“Java中拼接字符串String的N种方法总结”的攻略步骤: 一、使用 + 号 使用 + 号进行字符串拼接 示例代码: String str = "hello"; String result = str + " world"; 解释说明: 上面代码中,我们使用 + 号将 “hello” 和 ” wor…

    Java 2023年5月26日
    00
  • 关于mysql时间区间问题浅析

    下面是关于“关于mysql时间区间问题浅析”的完整攻略。 1. 问题的提出 在mysql中处理时间区间问题常常会遇到一些困难,例如当需要查询最近一周、一个月或一年的数据时,应该如何正确的处理时间范围? 2. 解决方法 2.1 使用范围查询 查询一天内的数据可以用如下语句: SELECT * FROM table_name WHERE create_time …

    Java 2023年5月20日
    00
  • Python和Go成为2019年最受欢迎的黑客工具(推荐)

    Python和Go成为2019年最受欢迎的黑客工具(推荐) 最近,Python和Go成为了黑客最钟爱的工具之一,这主要是因为Python和Go都具有强大的库和框架,而且易于学习和使用。在本篇攻略中,我们将介绍使用Python和Go进行黑客工作的基本步骤和示例。 Python攻击黑客工具示例 1. UDP Flooding攻击 UDP Flooding是一种D…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部