java IO流之File类的使用

java高级之IO流

File类的使用

File类概述

  • 对于经常使用计算机的人,对计算机系统里面的目录和文件一定不陌生,在计算机系统上我们可以手动新增、修改、删除、查看文件夹及文件夹里的文件,也可以通过Java标准库中的java.io.File对象来操作文件和目录。

  • File类是文件和文件目录路径的抽象表示形式,它与平台无关,File类的一个对象,代表一个文件目录或一个文件。

  • File对象代表一个文件目录或一个文件,若磁盘中存在该对象表示的文件时,各个属性会显式赋值;如果磁盘中不存在该文件,创建的对象的属性取成员变量的默认值。

  • File 能对文件和目录进行相关操作,比如新建、删除、重命名,修改时间、文件大小等。也就是说,File类的操作层面在文件,它不能访问具体的文件内容,如果需要访问具体的文件内容,需要使用到输入/输出流。

  • Java程序中的一个File对象可能没有一个真实存在的文件或目录,但要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象。

  • File对象可以作为参数传递给流的构造器。

路径分隔符

  • 路径中的每级目录之间用一个路径分隔符隔开。不同的系统使用的路径分隔符也不同:windows和DOS系统默认使用\来表示,在Java字符串中需要用\\表示一个\、UNIX和URL使用/来表示。

  • Java程序支持跨平台运行,因此路径分隔符要谨慎使用。为了解决不同系统间路径分割符的隐患,File类提供了一个常量。

    //该常量可以根据操作系统,动态的提供分隔符
    public static final String separator = "" + separatorChar;
    

File类常用方法

构造方法

方法的格式 方法的描述
File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例。
File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。
/**
 * File类的构造方法
 *      1、传入绝对路径 或者 传入相对路径
 *          File(String filePath) 
 *      2、传入父路径和子路径 String类型数据
 *          File(String parentPath,String childPath)
 *      3、File类型 和 String类型的参数
 *          File(File parentFile,String childPath)
 */
@Test
public void test1(){
    
    
    //1.1、相对于当前module 相对路径
    File file1 = new File("hello.txt");
    //1.2、绝对路径
    File file2 =  new File("/Users/mac/Documents/common/每日必看/hello.txt");
    //2.1、两个String类型的参数
    File file3 = new File("/Users/mac/Documents/common/每日必看","Java");
    System.out.println(file3);
    //3.1、一个File类型参数一个String类型参数
    File file4 = new File(file3,"hi.txt");
}

获取方法

方法的格式 方法的描述
String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
String getCanonicalPath() 返回此抽象路径名的规范路径名字符串。
String getPath() 将此抽象路径名转换为路径名字符串。
String getName() 返回由此抽象路径名表示的文件或目录的名称
String getParent() 获取上层文件目录路径。若无,返回null
long length() 获取文件长度(即:字节数)。不能获取目录的长度
long lastModified() 获取最后一次的修改时间,毫秒值
String[] list() 获取指定目录下的所有文件或者文件目录的名称数组
File[] listFiles() 获取指定目录下的所有文件或者文件目录的File数组
File filemethod1 = new File("hello.txt");
File filemethod2 = new File("/Users/mac/Documents/common/每日必看/io/hello.txt");
//绝对路径
System.out.println(filemethod1.getAbsoluteFile());
//规范路径
System.out.println(filemethod1.getCanonicalPath());
//路径
System.out.println(filemethod1.getPath());
//名称
System.out.println(filemethod1.getName());
//上层文件目录路径
System.out.println(filemethod1.getParent());
//文件长度
System.out.println(filemethod1.length());
//最后一次的修改时间
System.out.println(new Date(filemethod1.lastModified()));

//指定目录下的所有文件或者文件目录的名称数组   重点在名称
File file = new File("/Users/mac/Documents/common/每日必看");
String[] list = file.list();
for(String s : list){
    
    
    System.out.println(s);
}
System.out.println();
//指定目录下的所有文件或者文件目录的File数组  重点是所有的File目录
File[] files = file.listFiles();
for(File f : files){
    
    
    System.out.println(f);
}
  • 注意绝对路径和规范路径的区别:可以用.表示当前目录,..表示上级目录。现在有两个目录:/Users/mac/Documents/common/每日必看1/Users/mac/Documents/common/每日必看2。则每日必看1的路径表示
    • 绝对路径:/Users/mac/Documents/common/每日必看1 等价于/Users/mac/Documents/common/每日必看2/../每日必看1
    • 规范路径:/Users/mac/Documents/common/每日必看1

重命名与判断方法

方法的格式 方法的描述
boolean renameTo(File dest) 重命名由此抽象路径名表示的文件
boolean isDirectory() 测试此抽象路径名表示的文件是否为目录。
boolean isFile() 测试此抽象路径名表示的文件是否为普通文件。
boolean exists() 测试此抽象路径名表示的文件或目录是否存在。
boolean canRead() 测试应用程序是否可以读取由此抽象路径名表示的文件。
boolean canWrite() 测试应用程序是否可以修改由此抽象路径名表示的文件。
boolean canExecute() 测试应用程序是否可以执行此抽象路径名表示的文件。
boolean isHidden() 测试此抽象路径名命名的文件是否为隐藏文件
 //目的地:file2 不能存在    file1存在才能返回true
 File file1 =  new File("/Users/mac/Documents/common/每日必看/io/hello.txt");
 File file2 =  new File("/Users/mac/Documents/common/每日必看/io/hello2.txt");
 boolean flag = file1.renameTo(file2);
 //是否为目录
 System.out.println(file2.isDirectory());
 //是否为普通文件
 System.out.println(file2.isFile());
 //是否存在
 System.out.println(file2.exists());
 //是否可以读取
 System.out.println(file2.canRead());
 //是否可以修改
 System.out.println(file2.canWrite());
 //是否可以执行
 System.out.println(file2.canExecute());
 //是否为隐藏文件
 System.out.println(file2.isHidden());

创建和删除方法

方法的格式 方法的描述
boolean createNewFile() 创建文件。若文件存在,则不创建,返回false
boolean mkdir() 创建文件目录。如果此文件目录存在,不创建。如果此文件目录的上层目录不存在,不创建。
boolean mkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。
boolean delete() 删除由此抽象路径名表示的文件或目录。
File file1 =  new File("/Users/mac/Documents/common/每日必看/io/hello.txt");
if(!file1.exists()){
    
    
  	//创建文件
    file1.createNewFile();
    System.out.println("创建!");
} else {
    
    
  	//删除文件
    file1.delete();
    System.out.println("删除!");
}
//创建文件目录 若此目录的上层目录不存在 不创建,若该目录存在,也不创建
File file2 =  new File("/Users/mac/Documents/common/每日必看/io/file1/file2");
boolean mkdir = file2.mkdir();
System.out.println("mkdir = "+mkdir);
//创建目录,就算该目录的父目录不存在也会创建成功
File file3 = new File("/Users/mac/Documents/common/每日必看/io/file1/file3");
Boolean mkdir1 = file3.mkdirs();
System.out.println("mkdir1=" + mkdir1);

总结

  • 主要讲java.io.File类的基本理解以及常见的问题,对File中的常用方法进行了简单练习。

欢迎关注

  • 公众号简介:分享各种编程知识与excel相关技巧

猜你喜欢

转载自blog.csdn.net/W_ryxj000/article/details/110249464