File、递归
发布日期:2022-04-22 13:47:35 浏览次数:9 分类:博客文章

本文共 14082 字,大约阅读时间需要 46 分钟。

File类

概述

  1、概述

  java.IO.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

  我们可以使用File类的方法

  创建文件/文件夹

  删除文件/文件夹

  判断文件/文件是否存在

  对文件夹进行遍历

  获取文件大小

  2、注意

  File类是一个与操作系统无关的类,任何操作系统都可以用这个类中的方法

  3、重点:记住三个单词

  file、director、path

File类的静态成员变量

  

 

 

   1、与系统相关的路径分隔符

package day08;import java.io.File;public class demo07 {    public static void main(String[] args) {        String pathSeparator = File.pathSeparator;        System.out.println(pathSeparator);//路径分隔符 windows:分号 Linux:冒号    }}
File.pathSeparator;
package day08;import java.io.File;public class demo07 {    public static void main(String[] args) {        String pathSeparator = File.pathSeparator;        System.out.println(pathSeparator);//路径分隔符 windows:分号 Linux:冒号        char pathSeparatorChar = File.pathSeparatorChar;        System.out.println(pathSeparatorChar);        /**         *  ;         *  ;         */    }}
File.pathSeparatorChar

  路径分隔符:windows ";",linux ":"

  2、与系统相关的默认文件分隔符

package day08;import java.io.File;public class demo07 {    public static void main(String[] args) {        String pathSeparator = File.pathSeparator;        System.out.println(pathSeparator);//路径分隔符 windows:分号 Linux:冒号        char pathSeparatorChar = File.pathSeparatorChar;        System.out.println(pathSeparatorChar);        /**         *  ;         *  ;         */        String separator = File.separator;        System.out.println(separator);//文件名称分隔符 windos:反斜杠\ Linux:/        char separatorChar = File.separatorChar;        System.out.println(separatorChar);    }}
File.separator & File.separatorChar

  文件名称分隔符: windos:反斜杠\ Linux:/

绝对路径&相对路径

  1、绝对路径

  绝对路径:指的是一个完整的路径,以盘符开始的路径

    C:\Users\YIAN\Desktop\File\task.txt

  2、相对路径

  相对路径:是一个简化的路径

  相对指的是相对于当前项目的根目录(D:\IdeaProjects\JinJie\src\day08\demo07.java)

  如果使用当前项目的根目录,路径可以简写

  例如:

  C:\Users\YIAN\Desktop\File\task.txt

  简写:

  task.txt

  3、注意

  1.路径不区分大小写

  2.路径中的文件名称分隔符windows使用反斜杠/反斜杠是转义字符,所以在java中两个反斜杠,代表一个普通斜杠//

构造方法  

  public File(String pathname);

  通过给定的路径名字符串 转换为 抽象路径名来创建新的File实例

package day08.day08_1;import java.io.File;public class day08_1 {    public static void main(String[] args) {        show("C:\\Users\\YIAN\\Desktop\\File\\a.txt");    }    public static void show(String pathname){        File file = new File(pathname);        System.out.println(file);        // 返回 C:\Users\YIAN\Desktop\File\a.txt    }}
new File(pathname);

 

  参数:

  String pathname:字符串路径名称

  路径可以以文件结尾,也可以是以文件夹结尾 

package day08.day08_1;import java.io.File;public class day08_1 {    public static void main(String[] args) {        //以文件夹结尾        show("C:\\Users\\YIAN\\Desktop\\File\\Dircetory");        //以文件结尾        show("C:\\Users\\YIAN\\Desktop\\File\\a.txt");    }    public static void show(String pathname){        File file = new File(pathname);        System.out.println(file);    }}
文件 & 文件夹结尾

 

  路径可以是绝对路径,也可以是相对路径

package day08.day08_1;import java.io.File;public class day08_1 {    public static void main(String[] args) {        //使用绝对路径        show("C:\\Users\\YIAN\\Desktop\\File\\Dircetory");//C:\Users\YIAN\Desktop\File\Dircetory        //使用相对路径        show("a.txt");//a.txt    }    public static void show(String pathname){        File file = new File(pathname);        System.out.println(file);    }}
绝对路径 & 相对路径

 

  注意:

  创建File对象,只是把字符串路径封装为File对象(不会判断实例文件是否真的存在),不考虑路径的真假情况

 public File(String parent,String child)

  从父路径名字字符串子路径字符串创建新的File实例

package day08.day08_1;import java.io.File;public class day08_02 {    //public File(String parent,String child)    public static void main(String[] args) {        //给定 父路径 子路径        methodB("C:\\Users\\YIAN\\Desktop\\File","task.txt");    }    public static void methodB(String parent,String child){        File file = new File(parent,child);        System.out.println(file);        //返回 C:\Users\YIAN\Desktop\File\task.txt    }}
new File(String parent,String child)

 

  参数:把文件分成了两部分

  String parent:父路径

  String child:子路径

  好处:

  父路径和子路径可以单独写,使用起来灵活;父子路径都可以变化

package day08.day08_1;import java.io.File;public class day08_02 {    //public File(String parent,String child)    public static void main(String[] args) {        //给定 父路径 子路径        methodB("C:\\Users\\YIAN\\Desktop\\File","task.txt");        //返回 C:\Users\YIAN\Desktop\File\task.txt        methodB("d:\\","a.txt");        //返回 d:\a.txt    }    public static void methodB(String parent,String child){        File file = new File(parent,child);        System.out.println(file);    }}
灵活性展示  

  public File(File parent,String child)

  从父抽象路径名子路径名字符串创建新的File实例

package day08.day08_1;import java.io.File;public class day08_03 {    public static void main(String[] args) {        //创建File对象        File parent = new File("d:\\");        methodC(parent,"a.txt");        //返回 d:\a.txt    }    public static void methodC(File parent, String child){        File file = new File(parent,child);        System.out.println(file);    }}
new File(File parent, String child);

  参数:把文件分成了两部分

  File parent:父路径

  String child:子路径

  好处:

  父路径和子路径可以单独写,使用起来灵活;父子路径都可以变化

  父路径是File类,可以使用File的方法对路径进行一些操作,再使用路径创建对象

常用方法---获取功能的方法

  public String getAbsolutePath();

  返回此File的绝对路径

package day08.day08_2;import java.io.File;public class demo01 {    //getAbsolutePath() 返回File路径    public static void main(String[] args) {        //绝对路径        File f1 = new File("C:\\Users\\YIAN\\Desktop\\File\\a.text");        //相对路径        File f2 = new File("b.text");        String absolutePath1 = f1.getAbsolutePath();        System.out.println(absolutePath1);        //C:\Users\YIAN\Desktop\File\a.text        String absolutePath2 = f2.getAbsolutePath();        System.out.println(absolutePath2);        //D:\IdeaProjects\JinJie\b.text    }}
.getAbsolutePath()

 

  注意:无论File实例是绝对路径还是相对路径 返回的都是绝对路径

  public String getPath();

  将此File转换为路径名字符串

package day08.day08_2;import java.io.File;public class demo02 {    public static void main(String[] args) {        File f1 = new File("C:\\Users\\YIAN\\Desktop\\File\\a.text");        String path = f1.getPath();        System.out.println(path);        //C:\Users\YIAN\Desktop\File\a.text        File f2 = new File("a.text");        String path1 = f2.getPath();        System.out.println(path1);        //a.text    }}
.getPath();

 

  绝对路径返回绝对路径名字符串

  相对路径返回相对路径名字符串

  public String getName();

  返回由此File表示的文件文件夹名称。

package day08.day08_2;import java.io.File;public class demo03 {    public static void main(String[] args) {        File f1 = new File("C:\\Users\\YIAN\\Desktop\\File\\a.txt");        String name1 = f1.getName();        System.out.println(name1);        //返回文件夹名 a.txt        File f2 = new File("b.txt");        String name2 = f2.getName();        System.out.println(name2);        //返回文件名 b.txt        File f3 = new File("C:\\Users\\YIAN\\Desktop\\File");        String name3 = f3.getName();        System.out.println(name3);        //返回文件夹名 File    }}
.getName()

 

  public long length();

  返回由此File表示的文件的长度(大小 字节为单位)

  注意:

  1.文件夹是没有大小概念的,不能获取文件夹大小

  2.如果构造方法给出的路径不存在,那么length方法返回0

package day08.day08_2;import java.io.File;public class demo04 {    public static void main(String[] args) {        //真实存在的文件        File f1 = new File("C:\\Users\\YIAN\\Desktop\\File\\task.txt");        long length1 = f1.length();        System.out.println(length1);//返回 9 字节        //不存在的文件        File f2 = new File("C:\\Users\\YIAN\\Desktop\\File\\b.jpg");        long length2 = f2.length();        System.out.println(length2);//返回 0字节        //测试获取文件大小        File f3 = new File("C:\\Users\\YIAN\\Desktop\\File");        long length3 = f3.length();        System.out.println(length3);// 返回 0字节    }}
.length();

 

常用方法---判断功能的方法

  public boolean exists();

  此File表示的文件目录是否实际存在

package day08.day08_2;import java.io.File;public class demo05 {    public static void main(String[] args) {        File f1 = new File("C:\\Users\\YIAN\\Desktop\\File\\");        System.out.println(f1.exists());//存在此文件夹 true        File f2 = new File("C:\\Users\\YIAN\\Desktop\\File\\a.txt");        System.out.println(f2.exists());//不存在此文件 false        //相对路径        File f3 = new File("JinJie.iml");        System.out.println(f3.exists());//存在此文件 true    }}
.exsits()

 

  public boolean isDirectory()

  此File表示的是否为目录(判断此目录是否存在)

  public Boolean isFile()

  此File表示的是否为文件(判断此文件是否存在)

package day08.day08_2;import java.io.File;public class demo06 {    public static void main(String[] args) {        File f1 = new File("C:\\Users\\YIAN\\Desktop\\File\\");        File f2 = new File("JinJie.iml");        File f3 = new File("C:\\Users\\YIAN\\Desktop\\File\\test.txt");        //先判断文件是不是存在        if(f1.exists()){            //判断是否为文件夹            System.out.println(f1.isDirectory()); //true            //判断是否为文件            System.out.println(f1.isFile()); //false        }        if(f2.exists()){            //判断是否为文件夹            System.out.println(f2.isDirectory()); //false            //判断是否为文件            System.out.println(f2.isFile()); //true        }        //文件不存在 不进行if 中的代码        if(f3.exists()){            //判断是否为文件夹            System.out.println(f3.isDirectory()); //true            //判断是否为文件            System.out.println(f3.isFile()); //false        }    }}
isDirectory || isFile

常用方法---创建删除功能的方法

  public boolean creatNewFile();

  当且仅当具有该名称的文件尚不存在,创建一个新的空文件(当前文件夹没有,才能创建)

  返回值:布尔值

  true:文件不存在,创建文件,返回true

package day08.day08_2;import java.io.File;import java.io.IOException;public class demo07 {    public static void main(String[] args) {        //在 C:\Users\YIAN\Desktop\File\ 文件目录下 创建1.txt        File file = new File("C:\\Users\\YIAN\\Desktop\\File\\","1.txt");        try {            boolean newFile = file.createNewFile();            System.out.println(newFile); //true 创建成功        } catch (IOException e) {            e.printStackTrace();        }    }}
.creatNewFile()

 

  false:文件存在,不会创建,返回false

package day08.day08_2;import java.io.File;import java.io.IOException;public class demo07 {    public static void main(String[] args) {        //再次 在 C:\Users\YIAN\Desktop\File\ 文件目录下 创建1.txt        File file = new File("C:\\Users\\YIAN\\Desktop\\File\\","1.txt");        try {            boolean newFile = file.createNewFile();            System.out.println(newFile); //false 创建失败        } catch (IOException e) {            e.printStackTrace();        }    }}
再次创建1.txt

 

  注意:

  1、此方法只能创建文件,不能创建文件夹

package day08.day08_2;import java.io.File;import java.io.IOException;public class demo08 {    public static void main(String[] args) {        //通过creatNewFile创建文件夹        File file = new File("C:\\Users\\YIAN\\Desktop\\File\\","directory");        try {            boolean newFile = file.createNewFile();            System.out.println(newFile);//true 这里返回true 实际上创建成功的还是文件 没有后缀名的文件        } catch (IOException e) {            e.printStackTrace();        }    }}
.creatNewFile()

 

  2、创建文件的路径必须存在否则会抛出异常

  public boolean mkdir();

  创建由此File表示的目录(单级文件夹

package day08.day08_2;import java.io.File;import java.io.IOException;public class day09 {    public static void main(String[] args) throws IOException {        File file = new File("C:\\Users\\YIAN\\Desktop\\File\\file1");        boolean mkdir = file.mkdir();        System.out.println(mkdir);//true    }}
.mkdir()

 

  注意:必须确保创建的文件夹不存在 才能创建

  public boolean mkdirs();

  创建由此File表示的单级/多级文件夹

package day08.day08_2;import java.io.File;public class demo10 {    public static void main(String[] args) {        //创建单级文件夹        File file = new File("C:\\Users\\YIAN\\Desktop\\File1");        boolean mkdirs = file.mkdirs();        System.out.println(mkdirs);//true    }}
.mkdirs() 创建单级文件夹

 

package day08.day08_2;import java.io.File;public class demo10 {    public static void main(String[] args) {        //创建单级文件夹        File file = new File("C:\\Users\\YIAN\\Desktop\\File2\\file2_1\\file2_1_1");        boolean mkdirs = file.mkdirs();        System.out.println(mkdirs);//true    }}
.mkdirs() 创建多级文件夹

 

  public boolean delete();

  此方法可以删除构造方法路径给出的文件/文件夹

  返回值:布尔值

  true:文件/文件夹删除成功,返回true

  false:文件夹中有内容,不会删除返回false;构造方法中的路径不存在返回false

  注意:

  delete方法是直接在硬盘删除文件/文件夹,不走回收站

package day08.day08_2;import java.io.File;import java.io.IOException;public class demo10 {    public static void main(String[] args) throws IOException {        //创建单级文件夹        File file = new File("C:\\Users\\YIAN\\Desktop\\File\\file1_1");        //创建文件夹        if(file.mkdirs()==true){            System.out.println("文件夹创建成功");        }        //创建文件        File direct = new File(file, "1.txt");        boolean newFile = direct.createNewFile();        if(newFile == true){            System.out.println("文件创建成功");        }        //删除文件        boolean del = direct.delete();        if(del ==true){            System.out.println("指定路径文件已删除");        }        //删除文件夹        boolean delF = file.delete();        if(delF==true){            System.out.println("文件夹删除成功");        }    }}
.delete()

目录的遍历

  public String[] list() 返回一个String数组,表示该File目录中的所有子文件或目录。(返回文件夹/文件名)

package day08.day08_2;import java.io.File;import java.io.IOException;public class demo10 {    public static void main(String[] args) throws IOException {        //创建单级文件夹        File file = new File("C:\\Users\\YIAN\\Desktop\\File");        //遍历文件目录        for (String list:file.list()             ) {            System.out.println(list);        }        /**         * 1.txt         * directory         * file1_1         * task.txt         */    }}
.list()--->返回字符串类型数组

  public File[] listFiles() 返回一个File数组,表示该File目录中的所有的子文件或目录。(返回带绝对路径的File)

package day08.day08_2;import java.io.File;import java.io.IOException;public class demo10 {    public static void main(String[] args) throws IOException {        //创建单级文件夹        File file = new File("C:\\Users\\YIAN\\Desktop\\File");        //遍历文件目录 返回File数组        File[] files = file.listFiles();        for (File f:files             ) {            System.out.println(f);        }        /**         * C:\Users\YIAN\Desktop\File\1.txt         * C:\Users\YIAN\Desktop\File\directory         * C:\Users\YIAN\Desktop\File\file1_1         * C:\Users\YIAN\Desktop\File\task.txt         */    }}
listFiles()--->返回File类数组

 

   注意:

   1.list方法和listFiles方法遍历的是构造方法给出的目录

   2.如果构造方法中给出的目录不存在,会抛出空指针异常

   3.如果构造方法给出的路径不是一个目录,也会抛出空指针异常

转载地址:https://www.cnblogs.com/LeToGoing/p/14593910.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:File、递归
下一篇:FileZilla搭建FTP服务器

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月26日 22时52分54秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

php如何捕捉异常并抛出去,php抛出异常与捕捉特定类型的异常详解 2019-04-21
php 缓冲区溢出漏洞,在Linux 容器中对php-fpm缓冲区溢出漏洞的复现分析 ( CVE-2019-11043 )... 2019-04-21
acm php如何用,欧拉回路的使用&&http://acm.hdu.edu.cn/showproblem.php?pid=3018 2019-04-21
oracle获取表注释,Oracle获取表名,表注释,字段注释 2019-04-21
oracle library命中率,oracle命中率查询 2019-04-21
oracle合并sql,Oracle SQL-使用合并功能 2019-04-21
linux文件大小 按兆,du命令 实现Linux 某个文件夹下的文件按大小排序 2019-04-21
linux7.4查看系统版本,Centos 7 查看系统版本信息 2019-04-21
linux程序打印cr3寄存器,CR0,CR3寄存器 2019-04-21
linux mkfs 分区,linux mkfs命令详解:格式化分区(为分区写入文件系统) 2019-04-21
linux 网卡管理,Linux 网卡高级管理 2019-04-21
linux 的fork函数原型,【操作系统】关于fork() 2019-04-21
linux 图标root运行,linux – 从启动器以root身份运行Pycharm 2019-04-21
linux如何进去分区模式,linux磁盘分区模式 2019-04-21
linux CMakeCache.txt,Cmake入门教程 - 编写CMakeLists.txt文件编译C/C++程序 2019-04-21
linux shell lastindexof function,lastIndexOf和substr的应用案例 2019-04-21
linux优化deepin启动速度,如何让deepin启动更快? 2019-04-21
c语言读取多个连续的文件,C语言---多个线程读取文件 2019-04-21
cin gt gt a用c语言怎么写写,一初学者问我一问题,C语言的,然后我用笨拙的方法实现cin.putback... 2019-04-21
图片轮播c语言,IOS开发之UIScrollView实现图片轮播器的无限滚动 2019-04-21