A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-4-25 16:50 编辑

File类的常用方法介绍及使用_利用递归思想操作文件

File 的概述
package com.jobday09;
import java.io.File;
import java.io.IOException;

/*
* File:文件和目录路径名的抽象表示形式,File类的实例是不可变的
*
         术语:
                 目录---指的是文件夹

* 构造方法 :
*                 File(File parent,String child)
*                 File(String pathname)
*                 File(String parent,String child)
*
* 只是创建了一个File对象,这个File对象指向了一个路径而已,并没有创建任何文件,
* 如果创建的路径下没有该文件,也不会报错.
* 如果想要创建文件需要调用File的方法进行创建
*
* File 的常用功能:
*                         创建功能
*                                 boolean creatcNewFile()
*                                 boolean mkdir()
*                                 boolean mkdirs()
*                         删除功能
*                        
*                         获取功能
*                         判断功能
*
* 绝对路径:固定不可变的路径,以盘符开头
* 相对路径:相对某个参照物,不能以盘符开头

         以斜杠开头:   \\a\\b.txt 相当于当前所在盘符根目录
         以点"."开头:  项目根目录

*                 在eclipse中相对路径对应当前项目的根目录
*
* 注意:删除一个文件夹,这个文件夹下面不能有子文件夹和子文件
*
*
*/
public class File类概述 {

        public static void main(String[] args) throws IOException {
                // File类 构造函数的演示
                method_1();

                // File类方法的使用演示
                File f = new File("d:\\a\\b.txt");// 绝对路径
                File f2 = new File("b.txt");// 相对路径

                // boolean createNewFile()
                // 当指定文件不存在时创建文件并返回true,否则返回false
                // System.out.println(f2.createNewFile());

                // boolean mkdir()
                // 创建一个文件夹
                File f3 = new File("b");
                // System.out.println(f3.mkdir());

                // boolean mkdirs()
                // 创建多级文件夹,创建成功返回true,否则返回false
                File f4 = new File("a\\c\\e\\cab");
                //System.out.println(f4.mkdirs());
               
                //注意:"c.txt"只是File对象的一个参数,
                //它具体创建"文件"还是"文件夹",要根据具体的方法来确定
                File fs = new File("c.txt");
                //System.out.println(fs.mkdir());
               
                //boolean delete()
                //删除指定的文件,它只能删除单个文件,不能删除多级文件
                //删除成功返回true,否则返回false
                //System.out.println(f2.delete());
                File f6 = new File("a");
                System.out.println(f6.delete());
                //打印:false,不能删除带有子文件和子文件的文件
                System.out.println(f4.delete());
                //打印:true .删除了"a\\c\\e\\cab"路径下的cab文件夹
        }

        private static void method_1() {
                // File类 构造函数的演示
                // 1 File(String pathname)
                // 将指定的路径名转换成一个File对象
                File f = new File("D:\\模拟\\aaa.txt");

                // 2 File(String parent,String child)
                // 根据指定的父路径和文件名路径创建File对象
                File f2 = new File("D:\\", "a\\b.txt");

                // 3 File(File parent,String child )
                // 根据指定的父路径和文件路径创建File对象
                File parent = new File("D:\\a");
                File f3 = new File(parent, "b.txt");
                File f4 = new File(new File("D:\\a"), "b.txt");
        }
}
--------------------------------------------
>>>>>>>>  
package com.jobday09;
import java.io.File;
import java.io.IOException;
import java.util.Date;

/*
* File:文件和目录路径名的抽象表示形式,File类的实例是不可变的
*
* 构造方法 :
*                 File(File parent,String child)
*                 File(String pathname)
*                 File(String parent,String child)
*
* 只是创建了一个File对象,这个File对象指向了一个路径而已,并没有创建任何文件,
* 如果创建的路径下没有该文件,也不会报错.
* 如果想要创建文件需要调用File的方法进行创建
*
* File 的常用功能:
*                         创建功能
*                                 boolean creatcNewFile()
*                                 boolean mkdir()
*                                 boolean mkdirs()
*                         删除功能:
*                                   boolean delete()
*                         获取功能:
*
*                         File getAbsoluteFile() //以File对象形式返回
*                         String getAbsolutPath() //以String形式返回
*                         //以上两个方法的功能是获取File对象指向的绝对路径
*        String getParent()
*         File getParentFile()
*        //以上两个方法功能:获取File对象指向文件或文件夹的父路径
*        //也就是目标文件或文件夹之前的路径
*                         String getName()//获取File对象所指向的文件或文件夹的名字
*                         String getPath()//获取创建File对象时的路径
*                         //以上两个方法返回值不同
*         long lastModifide()//获取File对象所指向的文件或文件夹的最后修改时间
*         long length()//获取文件的字节(也就是大小),文件夹的字节数为0
*
*                         修改功能:
*                                 boolean renameTo(File dest)
*                                 //1.当两个File对象都指向相同文件或文件夹时,它可以更改文件或文件夹的名字
*                                 //2.可以将File对象所指向的文件或文件夹,移动到另外一个File对象所指向的重名的目标文件名所在路径
*                                 //3.该方法不更改,两个File对象的值
*                         判断功能:
*                                 boolean exists()
*                                 //判断文件夹或文件是否存在
*                                 boolean isAbsolute()
*                                 //判断File对象指向的是否是就对路径,如果是则返回true
*                                 /否则返回false
*                                 boolean isDirectory()
*                                 //判断File对象指向的路径是否是文件夹
*                                 boolean isFile()
*                                 //判断File对象指向的路径是否是文件
*                                 boolean isHidden()
*                                 //判断File对象指向的文件是否是有隐藏属性,如果隐藏了则返回true,
*                                 //否则返回false
*
* 绝对路径:固定不可变的路径,以盘符开头
* 相对路径:相对某个参照物,不能以盘符开头
*                 在eclipse中相对路径对应当前项目的根目录
*
* 注意:删除一个文件夹,这个文件夹下面不能有子文件夹和子文件
*
*
*/
public class File类概述 {

        public static void main(String[] args) throws IOException {
                // File类 构造函数的演示
                //method_1();
                // File类方法的使用演示
                //method_2();
                //获取绝对路径();
                //获取父路径();
                //获取文件或文件夹名字();
                //获取文件的最后修改时间();
                //获取文件的字节长度();
                //修改文件名
                File f1 = new File("E:\\aaa\\bbb\\ccc");
                File f2 = new File("E:\\aaa\\ccc");
                //boolean rename():
                //1.当两个File对象都指向相同文件或文件夹时,它可以更改文件或文件夹的名字
                //2.可以将File对象所指向的文件或文件夹,移动到另外一个File对象所指向的重名的目标文件名所在路径
                //3.该方法不更改两个File对象的值
                System.out.println(f1.renameTo(f2));
                System.out.println(f1);
               
        }

        private static void 获取文件的字节长度() {
                //获取文件的字节长度
                File f = new File("D:\\优酷视频下载\\北京遇上西雅图_超清.kux");
                //long length():获取文件的字节(也就是大小)
                System.out.println(f.length());
        }

        private static void 获取文件的最后修改时间() {
                //获取文件的最后修改时间
                File f1 = new File("a\\b\\d");
                System.out.println(f1.mkdirs());
                File f = new File("b");
                //long lastModifide()
                System.out.println(f1.lastModified());
                //打印结果:1523103266270  这是一个文件最后修改时间毫秒值
                Date date = new Date(f1.lastModified());
                System.out.println(date.toLocaleString());
        }
        
        private static void 获取文件或文件夹名字() throws IOException {
                //获取文件或文件夹名字
                File f1 = new File("b");
                System.out.println(f1.createNewFile());
                File f2 = new File("b.txt");
                System.out.println(f2.createNewFile());
                File f3 = new File("d:\\fl\\c.txt");
                System.out.println(f3.createNewFile());
                //String getName() 获取File对象所指向的文件或文件夹的名字
                System.out.println(f1.getName()+" "+f2.getName()+" "+f3.getName());
                //打印结果:b b.txt c.txt
                //String getPath() :获取创建File对象时的路径
                System.out.println(f1.getPath()+" "+f2.getPath()+" "+f3.getPath());
                //打印结果:b b.txt d:\fl\c.txt
        }

        private static void 获取父路径() throws IOException {
                //获取父路径
                File parent = new File("d:\\fl");
                File f = new File(parent,"c.txt");
                if(!parent.exists()){
                        parent.mkdirs();
                }
//                File f = new File("d:\\fl\\c.txt");
                System.out.println(f.createNewFile());
               
                //String getParent()
                System.out.println(f.getParent());
                //File getParentFile()
                System.out.println(f.getParentFile());
        }

        private static void 获取绝对路径() throws IOException {
                //获取绝对路径
                File f = new File("d:\\a\\c\\d");
                System.out.println(f.mkdirs());
                File f1 = new File("d:\\a\\c\\d\\c.txt");
                f1.createNewFile();
                File f2 = new File("b.txt");
                f2.createNewFile();
               
                //File getAbsoluteFile();
                //以File对象的形式返回当前File对象所指向的就对路径
                System.out.println(f2.getAbsoluteFile());
                //打印结果: d:\a\c\d\c.txt
               
                //String getAbsolutPath()
                //将存有相对路径的File对象f2的绝对路径以字符串的形式返回
                System.out.println(f2.getAbsolutePath());
                //打印结果: E:\eclipse\workspace\视频笔记\b.txt
        }

        private static void method_2() {
                // File类方法的使用演示
                File f = new File("d:\\a\\b.txt");// 绝对路径
                File f2 = new File("b.txt");// 相对路径

                // boolean createNewFile()
                // 当指定文件不存在时创建文件并返回true,否则返回false
                // System.out.println(f2.createNewFile());

                // boolean mkdir()
                // 创建一个文件夹
                File f3 = new File("b");
                // System.out.println(f3.mkdir());

                // boolean mkdirs()
                // 创建多级文件夹,创建成功返回true,否则返回false
                File f4 = new File("a\\c\\e\\cab");
                //System.out.println(f4.mkdirs());
               
                //注意:"c.txt"只是File对象的一个参数,
                //它具体创建"文件"还是"文件夹",要根据具体的方法来确定
                File fs = new File("c.txt");
                //System.out.println(fs.mkdir());
               
                //boolean delete()
                //删除指定的文件,它只能删除单个文件,不能删除多级文件
                //删除成功返回true,否则返回false
                //System.out.println(f2.delete());
                File f6 = new File("a");
                System.out.println(f6.delete());
                //打印:false,不能删除带有子文件和子文件的文件
                System.out.println(f4.delete());
                //打印:true .删除了"a\\c\\e\\cab"路径下的cab文件夹
        }

        private static void method_1() {
                // File类 构造函数的演示
                // 1 File(String pathname)
                // 将指定的路径名转换成一个File对象
                File f = new File("D:\\模拟\\aaa.txt");

                // 2 File(String parent,String child)
                // 根据指定的父路径和文件名路径创建File对象
                File f2 = new File("D:\\", "a\\b.txt");

                // 3 File(File parent,String child )
                // 根据指定的父路径和文件路径创建File对象
                File parent = new File("D:\\a");
                File f3 = new File(parent, "b.txt");
                File f4 = new File(new File("D:\\a"), "b.txt");
        }

}
------------------------------------------------
>>>>>>>> File类的重要获取方法  <<<<<<<<<<<<
package com.jobday09;

import java.io.File;

/*File类的重要获取方法:
*
*                 String[] list()
*          //1.获取File对象所指路径下目标文件夹内一级的所有文件名和文件夹名
*          //2.只有指向文件夹的File对象才可以调用该方法
*          //3.返回的是String类型
*                 File[] listFiles()
*          //1.返回File对象所指的目标文件夹内所有文件的绝对路径
*          //返回类型为File类的对象
*                 static File[] listRoots()
*                 //1.该方法是一个静态方法,直接使用File类名调用就行
*                 //2.返回值是该电脑上所有盘的根目录,也就是盘符
*/         
        
public class File类的重要获取方法 {

        public static void main(String[] args) {
                //method_1();
                //method_2();
               
                //static File[] listRoots()
                File[] files = File.listRoots();
                for(int i=0;i<files.length;i++){
                        System.out.println(files
);
                }
        }

        private static void method_2() {
                File f = new File("E:\\myeclipse安装包");
               
                File[] files = f.listFiles();
                for(int i=0;i<files.length;i++){
                        System.out.println(files
.getName());
                }
                //打印结果:
//                E:\myeclipse安装包\myeclipse.10.zip
//                E:\myeclipse安装包\myeclipse官方破解版
//                E:\myeclipse安装包\myeclipse注册机
        }

        private static void method_1() {
                File f = new File("E:\\aaa\\ccc\\接口的优点.jpg");
                File f1 = new File("E:\\aaa");
               
                //String[] list()
                String[] files = f1.list();
                for(int i=0;i<files.length;i++){
                        System.out.println(files
);
                }
        }
}
------------------------------------------
>>>>> 利用递归的思想  获取指定目录下的所有的指定文件(包含子目录) <<<<<

思考:将获取到的符合调件的文件名存到一个集合或数组中

package com.jobday09;

import java.io.File;

/*
*获取指定目录下所有的Java文件(包含子目录)
*步骤:
*                1.定义可以获取指定目录中的Java文件的方法
*                2.定义可以获取指定目录下,所有文件夹的路径
*
*/
public class 获取指定目录下所有的文件 {

        public static void main(String[] args) {
                File file = new File("src");
                //第一种方法
                dirGain(file);
                System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>");
                //第二种方法
                method(file);
        }
        //第一种方法,分两步实现
        public static void dirGain(File file){
                if(file.isDirectory()){
                        //获取指定目录中的java文件
                        fileGain(file);
                        //获取指定目录下所有的文件夹的绝对路径
                        File[] files = file.listFiles();
                        for(File f : files){
                                if(f.isDirectory()){
                                        dirGain(f);
                                }
                        }
                        
                }
        }
        
        //获取指定目中的java文件的方法
        public static void fileGain(File file){
                File[] files = file.listFiles();
                for(File f : files){
                        if(f.getName().endsWith(".java")){
                                System.out.println(f.getName());
                        }
                }
        }
        
        //第二种方法,简单
        public static void method(File file){
                if(file.isDirectory()){
                        File[] files = file.listFiles();
                        for(File f : files){
                                if(f.isFile()){
                                        System.out.println(f.getName());
                                }else{
                                        method(f);
                                }
                        }
                }
        }
}
-----------------------------------------------
>>>>>>>> 删除指定的文件夹 <<<<<<<<

package com.jobday09;

import java.io.File;

/*
* 1.删除指定的文件夹
* 2.如果想删除指定的文件,在delete()方法中删除文件的位置,添加一个判断行
*/
public class 删除指定路径下的所有文件 {

        public static void main(String[] args) {
                File file = new File("E:\\文件夹移动测试2");
                delete(file);
        }
        //1.删除指定路径下的所有文件
        public static void delete(File file){
                //首先判断传进的参数是不是一个路径(文件夹)
                if(file.isDirectory()){
                        //删除路径下的文件
                        File[] files = file.listFiles();
                        for(File f : files){
                                //判断f是不是文件
                                if(f.isFile()){
                                        //删除前现将文件名打印
                                        System.out.println(f.getName());
                                        f.delete();
                                }else{
                                        //否则就是一个文件夹,继续调用方法自身
                                        delete(f);
                                }
                        }
                        //删除文件夹自己
                        System.out.println(file.getName());
                        file.delete();
                }
               
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马