Java File类方法使用详解

摘要:
File对象表示磁盘上的实际文件和目录。Java中的File类是文件和目录路径名的抽象形式。使用File类可以获取有关文件本身的一些信息,例如文件所在的目录、文件长度、文件读写权限等。它还可以用于创建文件和目录、查找文件和删除文件。在Java中,File类是Java.io包中唯一表示磁盘文件本身的对象。File类表示有关处理文件和文件系统的信息。表1列出了File类的常用方法和描述。

cka 

在操作文件之前必须创建一个指向文件的链接或者实例化一个文件对象,也可以指定一个不存在的文件从而创建它。

File对象代表磁盘中实际存在的文件和目录

Java 中的 File 类是文件和目录路径名的抽象形式。使用 File 类可以获取文件本身的一些信息,例如文件所在的目录、文件长度、文件读写权限等,还可用于文件和目录的创建、文件的查找和文件的删除等

File 类简介

在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象。File 类定义了一些与平台无关的方法来操作文件,File类主要用来获取或处理与磁盘文件相关的信息,像文件名、 文件路径、访问权限和修改日期等,还可以浏览子目录层次结构。
File 类表示处理文件和文件系统的相关信息。也就是说,File 类不具有从文件读取信息和向文件写入信息的功能,它仅描述文件本身的属性。

File类提供了如下三种形式构造方法。

    1. File(File parent,String child):根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 
      File f4 = new File("C:\Users\Administrator\Desktop\");
      或者
      File f4 = new File("C:\Users\Administrator\Desktop");
      或者
      File f4 = new File("C:/Users/Administrator/Desktop/");
       
      File f5 = new File(f4, "FileWord.txt");
    2. File(String pathname):通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。如果给定字符串是空字符串,则结果是空的抽象路径名。
      File f2 = new File("C:\Users\Administrator\Desktop\FileWord.txt");
      或者:
      File f2 = new File("C:/Users/Administrator/Desktop/FileWord.txt");
    3. File(String parent,String child):根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
      File f3 = new File("C:\Users\Administrator\Desktop\", "FileWord.txt");
      或者
      File f3 = new File("C:/Users/Administrator/Desktop/", "FileWord.txt");

      注意: 单反斜杠在java中有特殊含义,所以需要变成\双斜杆。

使用任意一个构造方法都可以创建一个 File 对象,然后调用其提供的方法对文件进行操作。在表 1 中列出了 File 类的常用方法及说明。

表1 File类的常用方法
方法名称说明
boolean canRead()测试应用程序是否能从指定的文件中进行读取
boolean canWrite()测试应用程序是否能写当前文件
boolean delete()删除当前对象指定的文件 .
boolean exists()测试当前 File 是否存在
String getAbsolutePath()返回由该对象表示的文件的绝对路径名
String getName()返回表示当前对象的文件名
String getParent()返回当前 File 对象路径名的父路径名,如果此名没有父路径则为 null
boolean isAbsolute()测试当前 File 对象表示的文件是否为一个绝对路径名
boolean isDirectory()测试当前 File 对象表示的文件是否为一个路径
boolean isFile()测试当前 File 对象表示的文件是否为一个“普通”文件
long lastModified()返回当前 File 对象表示的文件最后修改的时间
long length()返回当前 File 对象表示的文件长度
String[] list()返回当前 File 对象指定的路径文件列表
String[] list(FilenameFilter)返回当前 File 对象指定的目录中满足指定过滤器的文件列表
boolean mkdir()创建一个目录,它的路径名由当前 File 对象指定
boolean mkdirs()创建一个目录,它的路径名由当前 File 对象指定
boolean renameTo(File)将当前 File 对象指定的文件更名为给定参数 File 指定的路径名


注意:假设在 Windows 操作系统中有一文件 D:javaspacehello.java,在 Java 中使用的时候,其路径的写法应该为 D:/javaspace/hello.java 或者 D:\javaspace\hello.java

以下是java测试:

项目结构:

Java File类方法使用详解第1张

java代码:

package FileDemo;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;


public class FileAction{

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        //file 操作文件
        
        File f1 = new File("src/FileWord.txt");
        System.out.println("得到f1的绝对路径:"+f1.getAbsolutePath());
        
        File f2 = new File("C:\Users\Administrator\Desktop\FileWord.txt");
        File f3 = new File("C:\Users\Administrator\Desktop\", "FileWord.txt");
        File f4 = new File("C:\Users\Administrator\Desktop\");
        File f5 = new File(f4,  "FileWord.txt");
        
        System.out.println("得到f2的绝对路径:"+f2.getAbsolutePath());// getAbsolutePath() 得到文件的绝对路径,即使文件位于项目中,得到的也是文件的绝对路径
        System.out.println("得到f3的绝对路径:"+f3.getAbsolutePath());
        System.out.println("得到f5的绝对路径:"+f5.getAbsolutePath());
        
        System.out.println(f2==f3);
        System.out.println(f2.equals(f5)); 
        
        Date d = new Date(f2.lastModified());
        SimpleDateFormat s = new SimpleDateFormat("yyyy-dd-MM hh:mm:ss");
        
        System.out.println("得到文件最后的修改时间:"+s.format(d));// lastModified() 得到文件最后的修改时间
        
        System.out.println("判断文件是否存在:"+f2.exists()); // exists() 判断文件是否存在   如果文件不存在,返回false,文件的修改时间为1970-01-01 08:00:00为计算机出现时间
        System.out.println("得到文件的长度,单位是字节:"+f2.length()); // length() 得到文件的长度,单位是字节
        System.out.println("判断文件是否隐藏:"+f2.isHidden());// isHidden() 判断文件是否隐藏
        
        System.out.println(f2.getName());// getName() 得到文件的名字,只有名字,不包括文件路径
        System.out.println(f2.getPath());// getPath() 得到文件的路径,当文件位于项目中时,得到的是相对路径,当文件位于项目外时,得到的是绝对路径
        System.out.println(f2.getParent());// getParent() 得到文件的父级目录,当文件位于项目中时,返回项目中的父级目录,当文件位于项目外时,得到文件的父级目录
        System.out.println(f1.delete()); // delete() 删除文件    当文件原本存在时,删除文件,返回true,当文件原本就不存在时,返回false
        System.out.println(f2.canRead()); //canRead() 是否可读
        System.out.println(f2.canWrite()); // canWrite() 是否可写
        System.out.println(f2.isDirectory()); // isDirectory() 是否是目录 true:是,false:不是
        System.out.println(f2.isFile()); // isFile() 是否是文件   true:是,false:不是
        System.out.println(f2.isAbsolute()); //isAbsolute()
        
        File f6 = new File("C:\MyFileWord.txt");
        //先判断文件是否存在,exists() true:存在,false:不存在,getAbsolutePath()获得文件的绝对路径,delete() 删除文件,createNewFile()文件不存在时,创建文件
        if(f6.exists()){
            System.out.println("获得f6的绝对路径:"+f6.getAbsolutePath());
            f6.delete();
        }else{
            try {
                f6.createNewFile();//createNewFile() 文件不存在时,创建文件
                System.out.println("f6创建文件成功:"+f6.getAbsolutePath());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
        
        
        // file操作目录
        
        //先判断目录是否存在,exists() true:存在,false:不存在,getAbsolutePath()获得目录的绝对路径,delete() 删除目录,mkdir()创建目录
        File f7 = new File("C:\FileDemo");
        if(f7.exists()){
            System.out.println("目录存在:"+f7.getAbsolutePath());
            f7.delete();
        }else{
            f7.mkdir();
            System.out.println("目录不存在存在,新建目录:"+f7.getAbsolutePath());
        }
        
        //遍历目录
        //通过遍历目录可以在指定的目录中查找文件,或者显示所有的文件列表。File类的  list() 方法提供遍历目录的功能    
        File f8 = new File("C:\FileDemo");
        String[] filelist=f8.list();//调用无参的list()方法,返回String[]数组
        //遍历返回的数组
        for (int i = 0; i < filelist.length; i++) {
            // filelist[i] 只会返回该目录下文件或者文件夹的名字
            System.out.println(filelist[i]);
            //如果需要获得文件的其他属性,需要先转换成File对象,根据其上级目录的位置,再调用其它属性方法,如下
            System.out.println("文件的绝对路径:"+new File("C:\FileDemo",filelist[i]).getAbsolutePath());
            System.out.println("是否是文件:"+new File("C:\FileDemo",filelist[i]).isFile());
            System.out.println("是否是目录:"+new File("C:\FileDemo",filelist[i]).isDirectory());
        }
        System.out.println("**************************************");
        //如果希望列出目录下的某些文件,就需要调用带有过滤器参数的list()方法,首先需要创建文件过滤器,该过滤器必须实现java.io.FilenameFilter接口,并在accept()方法中指定允许的文件类型
        File f9 = new File("C:\FileDemo");
        //实现java.io.FilenameFilter接口,并在accept()方法中指定允许的文件类型
        String[] filelist1=f9.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                // TODO Auto-generated method stub
                //允许的txt,docx的文件类型
                return name.endsWith(".txt") || name.endsWith(".docx");
            }
        });
        
        //遍历返回的数组
        for (int i = 0; i < filelist1.length; i++) {
            // filelist[i] 只会返回该目录下文件或者文件夹的名字
            System.out.println(filelist1[i]);
            //如果需要获得文件的其他属性,需要先转换成File对象,根据其上级目录的位置,再调用其它属性方法,如下
            System.out.println("文件的绝对路径:"+new File("C:\FileDemo",filelist1[i]).getAbsolutePath());
            System.out.println("是否是文件:"+new File("C:\FileDemo",filelist1[i]).isFile());
            System.out.println("是否是目录:"+new File("C:\FileDemo",filelist1[i]).isDirectory());
        }
        
        
    }

    

}
C:\FileDemo 的文件结构:

Java File类方法使用详解第2张

 控制台输出打印:

得到f1的绝对路径:E:workplace_mslocationserver_xinFileServersrcFileWord.txt

得到f2的绝对路径:C:UsersAdministratorDesktopFileWord.txt

得到f3的绝对路径:C:UsersAdministratorDesktopFileWord.txt

得到f5的绝对路径:C:UsersAdministratorDesktopFileWord.txt

false

true

得到文件最后的修改时间:2019-06-06 09:52:23

判断文件是否存在:true

得到文件的长度,单位是字节:6

判断文件是否隐藏:false

FileWord.txt

C:UsersAdministratorDesktopFileWord.txt

C:UsersAdministratorDesktop

false

true

true

false

true

true

获得f6的绝对路径:C:MyFileWord.txt

目录存在:C:FileDemo

filea

文件的绝对路径:C:FileDemofilea

是否是文件:false

是否是目录:true

fileb.txt

文件的绝对路径:C:FileDemofileb.txt

是否是文件:true

是否是目录:false

filec.docx

文件的绝对路径:C:FileDemofilec.docx

是否是文件:true

是否是目录:false

**************************************

fileb.txt

文件的绝对路径:C:FileDemofileb.txt

是否是文件:true

是否是目录:false

filec.docx

文件的绝对路径:C:FileDemofilec.docx

是否是文件:true

是否是目录:false

参考文档:http://c.biancheng.net/view/1133.html

免责声明:文章转载自《Java File类方法使用详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux MD5 SHA1 等 文件校验方法JavaWeb总结(八)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用 -命令行-给-python-安装whl文件,

whl文件下载到哪个位置,命令行就切入到哪里; 我的在D盘目录下,所以命令行切进D盘(CD):方式如下: 列出《用户目录》下的目录(dir): 因为我安装了2个版本的python所以给python2.7版本的用的是pip2,给python3安装用pip3.使用单个版本的就直接用pip即可:pip install xxx.whl   安装成功会有提示...

VSFTP服务

概述: FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP(File Transfer Protocol: 文件传输协议)作用: Internet 上用来传送文件的协议 常见FTP服务器: windows:Serv-U FTP Server L...

【linux】suse linux 常用命令

命令ls——列出文件 ls-la给出当前目录下所有文件的一个长列表,包括以句点开头的“隐藏”文件 lsa*列出当前目录下以字母a开头的所有文件 ls-l*.doc给出当前目录下以.doc结尾的所有文件 命令cp——复制文件 cpafileafile.bak把文件复制为新文件afile.bak cpafile/home/bible/把文件afile从当前目录...

zlib编译

1.下载zlib库 http://zlib.net/ http://zlib.net/zlib-1.2.11.tar.gz 2. 将下载后的文件解压到如下目录 E:osgzlibzlib-1.2.11 3. 用VS2019打开 E:osgzlibzlib-1.2.11contribvstudiovc14zlibvc.sln 文件 4.修改编译类型 5.修...

PHP加密方法-用Zend Encoder加密PHP文件和PHP 优化配置(PHP文件加密)

在发布一个你写好的PHP程序时,你是不是担心自已辛苦写出来的成果会被别人占为已有呢?其实我们可以用Zend Encoder为我们的PHP文件加上一层保护壳。 软件版本:2.0.1 软件大小:10.2M 适用平台:Win9X/2000/XP 官方网址:http://www.zend.com/store/products/zend-encoder.php 软件...

Python—模块

Python—模块 一、模块模块,是用一堆代码实现了某个功能的代码集合,模块分为三种:自定义模块(自己定义)、内置模块(python自带)、开源模块导入模块(1)、导入一个py文件,解释器解释该py文件(2)、导入一个包,解释器解释该包下的 __init__.py 文件 #模块导入import modulefrom module.xx import xxf...