File类基础

File类的作用:
Java的io包中定义了File类,用于对文件或文件夹的管理操作。
File类只能够用于表示文件或文件夹的信息(属性)和对该文件或文件夹的删除创建操作
(不能对内容进行访问)
通过创建File类对象可以用程序来操作电脑上的文件或文件夹。

File类的构造方法:
File(String path):通过指定的路径名字符串来创建一个新的File对象,抽象路径名是用来表示某个文件或文件夹的路径定位。
File(File parent,String path):根据parent父文件对象和path子文件名字符串来创建一个新的File对象。

File类的常用API
文件操作:
exists():判断文件是否存在:返回值为布尔值
getCanonicalPath() :获取当前文件的标准路径名 
separator:用于表示路径层级分割符,可以避免不同操作系统的分割符不一致的情况
createNewFile():在硬盘中创建一个文件
length():长度
lastModified():创建时间:new Date(File.lastModified())
delete():删除
getName():获得文件或文件夹名

文件夹操作:
exists():判断文件是否存在:返回值为布尔值
getCanonicalPath()  :获取当前文件的标准路径名 
separator:用于表示路径层级分割符,可以避免不同操作系统的分割符不一致的情况
boolean mkdir():创建文件夹
mkdirs():如果父文件夹不存在就一起创建
listFiles():该方法返回的路径名用于表示此抽象路径名的目录中的文件和目录的数组
listFiles(FileFilter filter) :该方法返回的路径名用于表示此抽象路径名的目录中的文件和目录的数组,并且带有FileFilter类型的过滤器
isDirectory():判断是否文件夹
delDirectory(pp):调用删除文件夹方法

 1 public void testFile01() throws IOException{
 2         //在计算机内存中创建一个File对象,用来对应计算机的存储硬盘中的当前文件夹
 3         File file = new File(".");
 4         System.out.println("当前文件夹是否存在:"+file.exists());
 5         System.out.println("查看当前文件夹的路径位置:"+file.getCanonicalPath());
 6         //与硬盘中是否存在文件夹没有直接联系,只是存在JVM中的对象
 7         File fileDemo = new File(file,"fileDemo");
 8         System.out.println("查看当前文件夹中是否存在fileDemo文件夹:"+fileDemo.exists());
 9         if(!fileDemo.exists()){
10             fileDemo.mkdir();//创建出fileDemo文件夹
11         }
12
13                 File testFile = new  File(file,"aa"+File.separator+"testFile");
14         if(!testFile.exists()){
15 //            boolean flag = testFile.mkdir();
16 //            System.out.println("创建结果:"+flag);
17             testFile.mkdirs();//创建文件夹,当父目录不存在会把父目录先创建出来
18         }
19
20         File aFile = new File(fileDemo,"a.txt");
21         System.out.println("a.txt在硬盘中是否存在:"+aFile.exists());
22         if(!aFile.exists()){
23             aFile.createNewFile();//在硬盘中创建一个文件
24         }
25         System.out.println("a.txt在硬盘中是否存在:"+aFile.exists());
26         System.out.println("a.txt的标准路径为:"+aFile.getCanonicalPath());
27         System.out.println("a.txt的文件长度为:"+aFile.length());
28         System.out.println("a.txt的创建时间:"+new Date(aFile.lastModified()));
29         /*
30          * 删除文件对象表示的文件或文件夹,成功删除返回true。
31          * 如果文件对象表示的是一个文件夹,删除的时候必须保证此文件夹是空文件夹才能删除
32          */
33         aFile.delete();
34         //删除aa会失败
35         File aa = new File(file,"aa");
36         aa.delete();
37     }
public void testFile02(){
        File file = new File(".");//当前文件夹对象
        File[] files = null;
        if(file.exists()){
            //listFiles():查看当前文件夹下有什么子文件或子文件夹,如果文件夹路径为空,返回空
            //如果此路径名不是表示一个文件夹或者发生了I/O异常,也返回null
             files = file.listFiles();
        }
        for(File f:files){
            //getName():获得文件或文件夹名
            System.out.println(f.getName());
        }
    }
    public void testFile03() throws IOException{
        File path = new File(".");
        File pppp = new File(path,"pp"+File.separator+"ppp"+File.separator+"pppp");
        File demoFile = new File(pppp,"demo.txt");
        if(!pppp.exists()){
            pppp.mkdirs();//将父文件夹与子文件夹一起创建
        }
        if(!demoFile.exists()){
            demoFile.createNewFile();//创建文件
        }
        File pp = new File(path,"pp");
        delDirectory(pp);//调用删除文件夹方法下面没有文件则可以成功
    }
//使用遍历方法删除文件夹,如果内部有文件则删除文件,防止无法删除文件夹
    public static void delDirectory(File dir) throws IOException{
        if(!dir.exists()){//如果文件夹不存在,抛出运行时异常
            throw new RuntimeException("文件夹"+dir+"不存在");
        }
        if(!dir.isDirectory()){//判断是否文件夹
            throw new RuntimeException(dir+"不是目录");
        }
        File[] subs = dir.listFiles();
        if(subs!=null&&subs.length>0){//遍历所有子文件和文件夹,删除里面内容
            //遍历所有的subs
            for(File f:subs){
                if(!f.isDirectory()){//不是文件夹就是文件
                    System.out.println("文件名为:"+f.getName());
                    if(!f.delete()){//如果删除失败则抛出异常,如果成功则不进来,文件也删掉了
                        throw new IOException("无法删除文件"+f.getName());
                    }
                }else{//文件夹处理
                    System.out.println("开始处理文件夹"+f.getName());
                    delDirectory(f);//调用删除文件夹方法,删除子文件夹
                    System.out.println("子文件夹已经删除,开始删除该文件夹"+f.getName());
                    f.delete();//删除完子文件和子文件夹后,需要删除当前的文件夹
                }
            }
        }
        dir.delete();//删除dir目录的内容
    }
    //使用过滤器过滤掉一部分文件,处理符合规则的文件
    public void testFile04(){
        File file = new File("src"+File.separator+"day07");//创建文件对象
        FileFilter filter = new FileFilter(){
            //该方法用于定义过滤规则,如果return true则表示符合规则的
            //返回值为false  则表示不符合规则的
            @Override
            public boolean accept(File pathname) {
                //matches匹配符合正则表达式规则的内容
                if(pathname.getName().matches(".*[.]java")){
                    return true;
                }
                return false;
            }
        };
        //传入过滤器对象,过滤掉不符合规则的file对象
        File[] paths = file.listFiles(filter);
        for(File f:paths){
            System.out.println(f.getName());
        }
    }
时间: 2024-10-13 17:25:06

File类基础的相关文章

java IO流 之 FIle类基础

package IO; import java.io.File;import java.io.IOException; public class FileIO { /** * 构建及获取文件名信息 * @param args */ public static void FileName(String[] args) { System.out.println("路径分隔符: "+File.pathSeparator); //路径分隔符 System.out.println("名

黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类

---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或文件夹封装成对象 (2)方便于对“文件”与“文件夹属性信息”进行操作 (3)File对象,可以作为参数传递给流的构造函数 (二)构造方法 * 通过File的构造函数创建File对象 方式1:File f = new File("c:\\a.txt"); 方式2:File f2 = newF

黑马程序员——Java I/O流基础知识点(File类)

File工具 File类就是用俩将文件或者文件夹封装对象,弥补流对象的不足--流只能操作数据,不能操作文件夹的 封装的是路径!!! 构造方法演示 1.可以将已有的未出现的文件或者文件夹封装成对象. File f1=new File("c:\\abc\\a.txt"): File f2=new File("d:\\abc","ab.txt"打印,会打印路径.:目录分隔符,为了更好地跨平台File. File类常见功能 1,创建 createNewF

java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中

/** * File文件综合应用 * 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中. *  * 思路:1.需要深度遍历.--递归 * 2.遍历的过程中过滤指定扩展名的文件--过滤器FileNameFilter,将文件存入容器中 * 3.将容器中的内容遍历,写入到指定文件中 * */ 代码:  FilenameFilter 过滤器: package com.lp.ecjtu.File.filter; import java.io.File; import java.i

黑马程序员——黑马基础——File类,打印流

 黑马程序员--黑马基础--File类,打印流 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一,File类 用来将文件或者文件夹封装成对象 方便对文件与文件夹的属性信息进行操作. File对象可以作为参数传递给流的构造函数. File类常见方法: 1,创建. boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false. 和输出流不一样,输出流对象一建立创建文件.而且文件已经存在,

java基础知识回顾之javaIO类--File类应用:删除带内容的目录

/** * 深度删除一个带内容的目录 * 原理:必须从里往外删除,需要深度遍历 * @author Administrator * */ public class FileDeleteList { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File dir = new File("E:\\复件 demodir"); removedir(

java基础知识回顾之javaIO类--File类应用:递归深度遍历文件

代码如下: package com.lp.ecjtu.File.FileDeepList; import java.io.File; public class FileDeepList { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File dir = new File("E:"+File.separator+"demodir

java基础知识回顾之javaIO类--File类应用:过滤器接口FilenameFilter和FileFilter

FilenameFilter和FileFilter都是用来过滤文件,例如过滤,以.jpg或者.java结尾的文件,通过看他们的源码:通过使用File类中String[] list(FilenameFilter filter)或者public File[] listFiles(FileFilter filter)方法,把FilenameFilter或者FileFilter接口对象作为参数传入,通过实现接口里面的 boolean accept(File dir, String name) 或者boo

java基础知识回顾之javaIO类--File类

File类是对文件系统中文件以及目录(文件夹)进行封装的对象,可以通过面向对象的思想来操作文件和目录(文件夹).File类保存文件或目录的各种元素的信息,包括文件名,文件长度,最后修改日期,是否可读,获取当前文件的路径名,判断指定文件是否存在,获得当前文件的列表,创建.删除文件目录等方法. /**     * 构造方法:File f = new File("file.txt");//file.txt 相对路径     *       File f1 = new File("c