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

© 小K哥 中级黑马   /  2016-5-4 22:13  /  414 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一:File:文件和目录(文件夹)路径名的抽象表示形式
(一)构造方法
                File(String pathname):根据一个路径得到File对象
                  File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
                  File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象
(二)创建功能:
                public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了
                public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
                public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
(三)删除功能:
                public boolean delete()
                注意:
                        A:如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。
                        B:Java中的删除不走回收站。
                        C:要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹
(四)重命名功能:
                public boolean renameTo(File dest)
                        如果路径名相同,就是改名。
                        如果路径名不同,就是改名并剪切。
(五)判断功能:
                public boolean isDirectory():判断是否是目录
                public boolean isFile():判断是否是文件
                public boolean exists():判断是否存在
                public boolean canRead():判断是否可读
                public boolean canWrite():判断是否可写
                public boolean isHidden():判断是否隐藏
(六)获取功能:
                public String getAbsolutePath():获取绝对路径
                public String getPath():获取相对路径
                public String getParent():获取文件的父目录
                public String getName():获取名称
                public long length():获取长度。字节数
                public long lastModified():获取最后一次的修改时间,毫秒值
                public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
                public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组
                public String[] list(FilenameFilter filter):用字符串返回目录下指定类型的所有文件
        public File[] listFiles(FilenameFilter filter):用File对象返回目录下指定类型的所有文件
(七)例子:
        (1)判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
                  
                  分析:
                                  A:封装e判断目录
                                  B:获取该目录下所有文件或者文件夹的File数组
                                  C:遍历该File数组,得到每一个File对象,然后判断
                                  D:是否是文件
                                          是:继续判断是否以.jpg结尾
                                                  是:就输出该文件名称
                                                  否:不搭理它
                                          否:不搭理它
        代码实现:                           
                public class FileDemo {
                        public static void main(String[] args) {
                                // 封装e判断目录
                                File file = new File("e:\\");
                                // 获取该目录下所有文件或者文件夹的File数组
                                File[] fileArray = file.listFiles();
                                // 遍历该File数组,得到每一个File对象,然后判断
                                for (File f : fileArray) {
                                        // 是否是文件
                                        if (f.isFile()) {
                                                // 继续判断是否以.jpg结尾
                                                if (f.getName().endsWith(".jpg")) {
                                                        // 就输出该文件名称
                                                        System.out.println(f.getName());
                                                }
                                        }
                                }
                        }
                }
               
   (2)需求:把E:\评书\三国演义下面的视频名称修改为
                                  00?_介绍.avi                  
                  思路:
                                  A:封装目录
                                  B:获取该目录下所有的文件的File数组
                                  C:遍历该File数组,得到每一个File对象
                                  D:拼接一个新的名称,然后重命名即可。
                  
        代码实现:
                public class FileDemo {
                        public static void main(String[] args) {
                                // 封装目录
                                File srcFolder = new File("E:\\评书\\三国演义");
                                // 获取该目录下所有的文件的File数组
                                File[] fileArray = srcFolder.listFiles();
                                // 遍历该File数组,得到每一个File对象
                                for (File file : fileArray) {
                                        String name = file.getName();
                                        int index = name.indexOf("_");
                                        String numberString = name.substring(index + 1, index + 4);
                                        int endIndex = name.lastIndexOf('_');
                                        String nameString = name.substring(endIndex);
                                        String newName = numberString.concat(nameString);
                                        File newFile = new File(srcFolder, newName);
                                        // 重命名即可
                                        file.renameTo(newFile);
                                }
                        }
                }
        (3)需求:递归删除带内容的目录
                                        目录我已经给定:demo
                  
                          分析:
                                        A:封装目录
                                        B:获取该目录下的所有文件或者文件夹的File数组
                                        C:遍历该File数组,得到每一个File对象
                                        D:判断该File对象是否是文件夹
                                                是:回到B
                                                否:就删除

        代码实现:
                public class FileDeleteDemo {
                        public static void main(String[] args) {
                                // 封装目录
                                File srcFolder = new File("demo");
                                // 递归实现
                                deleteFolder(srcFolder);
                        }
                        private static void deleteFolder(File srcFolder) {
                                // 获取该目录下的所有文件或者文件夹的File数组
                                File[] fileArray = srcFolder.listFiles();
                                if (fileArray != null) {
                                        // 遍历该File数组,得到每一个File对象
                                        for (File file : fileArray) {
                                                // 判断该File对象是否是文件夹
                                                if (file.isDirectory()) {
                                                        deleteFolder(file);
                                                } else {
                                                        System.out.println(file.getName() + "---" + file.delete());
                                                }
                                        }
                                        System.out.println(srcFolder.getName() + "---" + srcFolder.delete());
                                }
                        }
                }
        (4)需求:请大家把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台。
          
                                  分析:
                                                A:封装目录
                                                B:获取该目录下所有的文件或者文件夹的File数组
                                                C:遍历该File数组,得到每一个File对象
                                                D:判断该File对象是否是文件夹
                                                        是:回到B
                                                        否:继续判断是否以.java结尾
                                                                是:就输出该文件的绝对路径
                                                                否:不搭理它
        代码实现:
                public class FilePathDemo {
                        public static void main(String[] args) {
                                // 封装目录
                                File srcFolder = new File("E:\\JavaSE");
                                // 递归功能实现
                                getAllJavaFilePaths(srcFolder);
                        }
                        private static void getAllJavaFilePaths(File srcFolder) {
                                // 获取该目录下所有的文件或者文件夹的File数组
                                File[] fileArray = srcFolder.listFiles();

                                // 遍历该File数组,得到每一个File对象
                                for (File file : fileArray) {
                                        // 判断该File对象是否是文件夹
                                        if (file.isDirectory()) {
                                                getAllJavaFilePaths(file);
                                        } else {
                                                // 继续判断是否以.java结尾
                                                if (file.getName().endsWith(".java")) {
                                                        // 就输出该文件的绝对路径
                                                        System.out.println(file.getAbsolutePath());
                                                }
                                        }
                                }
                        }
                }

0 个回复

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