我是靠谱客的博主 俊逸白羊,最近开发中收集的这篇文章主要介绍FILE_文件构造方法、创建、删除、遍历等功能、经典三个小题目①. File类概述②. 构造方法③. File类的创建功能④. 重命名和删除功能⑤. File类的判断功能⑥. 获取路径功能⑦. 文件三个小题目,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • ①. File类概述
  • ②. 构造方法
  • ③. File类的创建功能
  • ④. 重命名和删除功能
  • ⑤. File类的判断功能
  • ⑥. 获取路径功能
  • ⑦. 文件三个小题目

①. File类概述

  • ①. File类是Java提供的针对针对磁盘中的文件或目录转换对象的包装类
    File可以代表文件或文件夹
    File对象可以实现获取文件和目录属性等功能,可以实现对文件和目录的创建和删除等功能

  • ②. 绝对路径:是一个固定的路径,从盘符开始

  • ③. 相对路径相对于某个位置,在eclipse下是指当前项目下

②. 构造方法

  • ①. File(String pathname):根据一个路径得到File对象

  • ②. File(String parent,String child):根据一个目录和一个子文件/目录得到File对象

  • ③. File(File parent,String child):根据一个父File对象和一个子文件/目录得到File对象

        //File(String pathname):根据一个路径得到File对象
        //写一个表示转义了,所以要写两个
        File file=new File("C:\Users\Administrator\Desktop\day19_video");
        boolean flag=file.exists();
        System.out.println(flag);
        File file2=new File("hello.txt");
        System.out.println(file2.exists());

        //File(String parent,String child):根据一个目录和一个子文件/目录得到File对象
        String parent="F:\";
        String child="f.txt";
        File file3=new File(parent,child);
        System.out.println(file3.exists());

        //File(File parent,String child):根据一个父File对象和一个子文件/目录得到File对象
        File parent2=new File("F:\");
        File file4=new File(parent2,child);
        System.out.println(file4.exists());

③. File类的创建功能

  • ①. public boolean createNewFile():创建文件,如果存在这样的文件,就不创建了

  • ②. public boolean mkdir():创建文件夹,如果存在这样的文件夹,就不创建了

  • ③. public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来(多级文件夹)

        //public boolean createNewFile():创建文件,如果存在这样的文件,就不创建了
        File file=new File("yyy.txt");
        System.out.println(file.createNewFile());
        //public boolean mkdir():创建文件夹,如果存在这样的文件夹,就不创建了
        File dir1=new File("aaa");
        System.out.println(dir1.mkdir());
        //这样写是可以的,文件夹也可以有后缀的
        File dir2=new File("aaa.txt");
        System.out.println(dir2.mkdir());
        //public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
        File file3=new File("yyy\xxx");
        System.out.println(file3.mkdirs());

在这里插入图片描述

④. 重命名和删除功能

  • ①. public boolean renameTo(File dest):把文件重命名为指定的文件路径
  1. 如果路径名相同,就是改名
  2. 如果路劲名不同,就是改名并剪切
  • ②. public boolean delete():删除文件或者文件夹
  1. Java中的删除不走回收站
  2. 如果一个目录中有内容(目录、文件),不能直接删除。应该先删除目录下的内容,最后才删除目录
        File file1=new File("world.txt");
        File file2=new File("F:\world.txt");
        File file3=new File("hello.txt");
        System.out.println(file1.renameTo(file2));
        //如果删除一个文件夹,那么文件夹必须是空的
        System.out.println(file3.delete());

⑤. File类的判断功能

  • ①. public boolean exists( ):判断文件(File)是否存在

  • ②. public boolean isFile( ):判断File是否为文件

  • ③. public boolean isDirectory( ):判断File是否为目录

        //创建一个File对象
        File f = new File("D:\heima\java基础加强\day08\案例\老师讲解代码\myFile\java.txt");

//        public boolean isDirectory():测试此抽象路径名表示的File是否为目录
//        public boolean isFile():测试此抽象路径名表示的File是否为文件
//        public boolean exists():测试此抽象路径名表示的File是否存在
        System.out.println(f.isDirectory());//false
        System.out.println(f.isFile());//true
        System.out.println(f.exists());//true

⑥. 获取路径功能

  • ①. public String getAbsolutePath( ):获取绝对路径

  • ②. public String getPath( ):获取的是File()构造器中的方法的参数

  • ③. public String getName( ): 获取名称

  • ④. public File[ ] listFiles():`获取指定目录下的所有文件或者文件夹的File数组

  • ⑤. public String[ ]list():获取指定目录下所有的文件或者文件夹的名称数组

    // 现在在IDEA的项目目录下有一个a.txt
    File file=new File("a.txt");
    // 获取到的是E:workcode4.23.0-deva.txt
    System.out.println(file.getAbsolutePath());
    // a.txt
    System.out.println(file.getPath());
      File dir=new File("F:\");
      //获取F盘下所有的文件或文件夹对象
      File[]subFiles=dir.listFiles();
      for(File subFile:subFiles){
          if(subFile.isFile()&&subFile.getName().endsWith(".jpg")){
          System.out.println(subFile);
          }
      }

⑦. 文件三个小题目

  • ①. 键盘录入的文件夹,搜索以.txt结尾的文件
/*
题目一:键盘录入一个文件夹路径
		对键盘录入的文件夹路径进行判断
			如果不存在,提示重新录入
			如果是文件路径,提示再次录入文件夹录入
			如果是文件夹路径,搜索该文件下所有以.txt结尾的文件(包含子目录中的文件)
 */
public class Test02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个文件夹的路径:");

        //由于不确定到底要输入几次,最好来一个无限循环,这里也可以定义成一个方法
        while(true){
            //输入数据
            String s = sc.nextLine();
            //一个字符串,怎么确定是一个文件夹的路径? 或者是文件的路???
            //可以把输入的字符串变成一个  File对象
            //每次输入一个字符串,就把该字符串变成File
            File file = new File(s);

            //有可能是用户乱输入
            //最好先判断是否在计算机中存在
            if(!file.exists()){
                System.out.println("哥们,您输入的不存在,请重新输入!!!");
            }else if(file.isFile()){
                System.out.println("哥们,请输入一个文件夹好吗?");
            }else{
                //那么 file 代表的路径一定是 文件夹的路径
                //如果是文件夹路径,搜索该文件下所有 以.txt结尾的文件(包含子目录中的文件)
                //因为你要递归,所以要定义一个方法专门用于打印 .TXT 结尾的文件

                print(file);
                //结束循环
                break;
            }
        }
    }

    private static void print(File f) {
        /*
            分析:
                1,首先应该获取某一个文件夹下的所有数据 (不包含子文件) 返回一个File数组
                2,遍历数组
                3,判断数组中的对象是否为文件
                    如果是文件,判断该文件是否是 .txt文件
                        如果是就直接输出该文件的名字
                    如果不是文件,就需要递归调用
         */

        File[] files = f.listFiles();
		if(files!=null){
        //2,遍历数组
        for (File file : files) {
            //3,判断数组中的对象是否为文件
            if(file.isFile()){
                //如果是就直接输出该文件的名字
                if(file.getName().endsWith(".txt")){
                    System.out.println(file.getName());
                }
            }else{
                //如果不是文件,就需要递归调用
                print(file);
            }
        }
	}
  }
  • ②. 删除指定的目录(包含子目录)注意:切记别删除有用的数据,“概不负责哟”(重点是空目录的删除)
//这里的重点是空目录的删除
/*
题目二:删除指定的目录(包含子目录)注意:切记别删除有用的数据,"概不负责哟"
 */
public class Test03 {
    public static void main(String[] args) {
        //创建一个File对象,指向一个文件夹路径
        File f = new File("D:\新建文件夹");
        deleteDir(f);
    }
    public static void deleteDir(File file){
           /* 分析:
               文件夹不能直接删除,应该先删除文件夹中的文件,如果有子文件还需要先删除子文件夹中的文件
               1,获取 file 该文件夹下的所有数据 (不包含子文件夹中的数据), 返回是就是一个数组
               2,遍历数组
               3,判断数组中的数据是否为 文件
                    如果是文件,直接 干掉
                    如果是文件夹,需要递归调用
              会剩下 空文件夹*/
        //1,获取 file 该文件夹下的所有数据 (不包含子文件夹中的数据), 返回是就是一个数组
        File[] files = file.listFiles();
        if(files!=null){
	   //2,遍历数组
        for (File f : files) {
            //3,判断数组中的数据是否为 文件
            if(f.isFile()){
               //如果是文件,直接 干掉
               f.delete();
            }else{
                //如果是文件夹,需要递归调用
                deleteDir(f);
            }
        }
      }
        //只要在循环之后把File删除即可
        file.delete();
    }
}

  • ③.键盘录入一个文件夹路径,统计该文件夹(不包含子文件夹)中,每种类型的文件及个数
键盘录入一个文件夹路径,统计该文件夹(不包含子文件夹),每种类型的文件及个数,
	注意:用文件类型("java","txt"...)作为key,用个数作为value,
	放入到map集合中,并按照如下格式打印map集合中的内容
		docx类型的文件有  1 个
		java类型的文件有  24 个
		txt类型的文件有  10public class Demo5 {
    public static void main(String[] args) {
        File file=getFile();

        printNum(file);
        for(String key:hm.keySet()){
            Integer value=hm.get(key);
            System.out.println(key+"="+value);
        }
    }
    static HashMap<String,Integer> hm=new HashMap<>();

    //获取文件的个数
    public static void printNum(File file) {
       //F:test
        //将文件夹遍历
        File[] files = file.listFiles();
        if(files!=null){
            for(File file2:files){
                //判断是否是文件夹,如果是文件夹就递归调用
                if(file2.isDirectory()){
                    printNum(file2);
                }else{
                    //得到每一个文件夹中的文件的名字
                    String str=file2.getName();
                    //获取最后一个.出现的索引
                    int index=str.lastIndexOf(".");
                    //获取后缀名字
                    str=str.substring(index+1);//txt
                    //System.out.println(str);
                    hm.put(str,!hm.containsKey(str)?1:hm.get(str)+1);
                }
            }
        }

    }

    //得到文件
    private static File getFile() {
        Scanner sc=new Scanner(System.in);
        System.out.println("键盘录入一个文件夹路径");
        String line ;

        while(true){
            line = sc.nextLine();
            File file=new File(line);
            if(!file.exists()){
                System.out.println("你输入的文件夹路径不存在,请重新输入");
            }else  if(file.isFile()){
                System.out.println("你输入的是文件,请重新输入");
            }else{
                return file;
            }
        }
    }
}

最后

以上就是俊逸白羊为你收集整理的FILE_文件构造方法、创建、删除、遍历等功能、经典三个小题目①. File类概述②. 构造方法③. File类的创建功能④. 重命名和删除功能⑤. File类的判断功能⑥. 获取路径功能⑦. 文件三个小题目的全部内容,希望文章能够帮你解决FILE_文件构造方法、创建、删除、遍历等功能、经典三个小题目①. File类概述②. 构造方法③. File类的创建功能④. 重命名和删除功能⑤. File类的判断功能⑥. 获取路径功能⑦. 文件三个小题目所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部