File类学习

File类(File类的概述和构造方法)

  • A:File类的概述
    • File更应该叫做一个路径

      • 文件路径或者文件夹路径
      • 路径分为绝对路径和相对路径
      • 绝对路径是一个固定的路径,从盘符开始
      • 相对路径相对于某个位置,在eclipse下是指当前项目下,在dos下
    • 查看API指的是当前路径
      用File类的构造方法,将桌面路径封装成File对象需要注意什么?

    • 文件和目录路径名的抽象表示形式 !!!注意路径 是\表示,eg: E:\ 因为与转义字符区分

  • B:构造方法
    • File(String pathname):根据一个路径得到File对象
    • File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
    • File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象
  • C:案例演示
    • File类的构造方法
      案例:
      package com.heima.file;
      import java.io.File;
      public class Demo1_File {
      public static void main(String[] args) {
      //demo1();
      //demo2();
      demo3();
      }
      private static void demo3() {
      注意“”里面使用\会转义,所以应该?,但是文件输入流里面如果用/会怎样?

      @@File parent = new File("F:\双元课堂\day19\video");
      @@ //文件的输入流
      InputStream in = new FileInputStream("src/db.properties");
      String child = "001_今日内容.avi";
      //封装成file对象的好处,可以使用file对象的更多方法
      File file = new File(parent, child);
      System.out.println(file.exists());
      System.out.println(parent.exists());
      }
      public static void demo2() {
      String parent = "F:\双元课堂\day19\video";
      String child = "001_今日内容.avi";
      File file = new File(parent,child); !!!File类父子构造方法存在,因为可以让child 成了变量,可以不停赋值改变,这样就能建立不同的File,访问或建立每个父类s下的文件。
      System.out.println(file.exists());
      }
      public static void demo1() {
      //File file = new File("XXX.txt");//XXX.txt代表相对路径,相对于当前项目所在的位置
      //File file = new File("F:/双元课堂/day19/video/001_今日内容.avi");

      File file = new File("F:\双元课堂\day19\video\001_今日内容.avi");
      System.out.println(file.exists());
      //需要在所在项目下建立xxx.txt文件
      File file2 = new File("xxx.txt");
      System.out.println(file2.exists());

      File file3 = new File("yyy.txt");
      System.out.println(file3.exists());
      }
      }

19.15_File类(File类的创建功能)

  • A:创建功能
    • public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了
    • public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
    • public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
  • B:案例演示
    • File类的创建功能

    • 注意事项:

      • 如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。 !!!关键是不写盘符路径

案例:
package com.heima.file;
import java.io.File;
import java.io.IOException;
public class Demo2_FileMethod {

public static void main(String[] args) throws IOException {
    //demo1();
    demo2();
}
private static void demo2() {
    File dir1 = new File("aaa");
    System.out.println(dir1.mkdir());
    
    File dir2 = new File("bbb.txt");                //这样写是可以的,文件夹也是可以有后缀的
    System.out.println(dir2.mkdir());
    
    File dir3 = new File("ccc\\ddd");
    System.out.println(dir3.mkdirs());              //创建多级目录
}
public static void demo1() throws IOException {
    File file = new File("yyy.txt");
    System.out.println(file.createNewFile());           //如果没有就创建,返回true
    
    File file2 = new File("zzz");
    System.out.println(file2.createNewFile());
}

}

19.16_File类(File类的重命名和删除功能)

  • A:重命名和删除功能
    • public boolean renameTo(File dest):把文件重命名为指定的文件路径
    • public boolean delete():删除文件或者文件夹 !!!删除文件夹必须里面没有任何文件夹和文件
  • B:重命名注意事项
    • 如果路径名相同,就是改名。
    • 如果路径名不同,就是改名并剪切。
  • C:删除注意事项:
    • Java中的删除不走回收站。

    • 要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹
      案例:
      package com.heima.file;
      import java.io.File;
      public class Demo3_FileMethod {
      public static void main(String[] args) {
      //demo1();
      File file1 = new File("yyy.txt");
      System.out.println(file1.delete());

      File file2 = new File("aaa");
      System.out.println(file2.delete());

      File file3 = new File("ccc"); //如果删除一个文件夹,那么文件夹必须是空的
      System.out.println(file3.delete());
      }
      public static void demo1() {
      File file1 = new File("ooo.txt");
      File file2 = new File("D:\xxx.txt");
      System.out.println(file1.renameTo(file2));
      }
      }

19.17_File类(File类的判断功能)

  • A:判断功能

    • public boolean isDirectory():判断是否是目录
    • public boolean isFile():判断是否是文件
    • public boolean exists():判断是否存在
    • public boolean canRead():判断是否可读
    • public boolean canWrite():判断是否可写
    • public boolean isHidden():判断是否隐藏
  • B:案例演示

    • File类的判断功能
      案例:
      package com.heima.file;
      import java.io.File;
      public class Demo4_FileMethod {

    public static void main(String[] args) {
    //demo1();
    demo2();
    }
    public static void demo2() {
    File file = new File("zzz");
    file.setReadable(false);
    System.out.println(file.canRead()); //windows系统认为所有的文件都是可读的
    file.setWritable(true);
    System.out.println(file.canWrite()); //windows系统可以设置为不可写
    //现在项目路径下建立aaa.txt,并设置为隐藏
    File file2 = new File("aaa.txt");
    System.out.println(file2.isHidden()); //判断是否是隐藏文件
    System.out.println(file.isHidden());
    }
    public static void demo1() {
    File dir1 = new File("ccc");
    System.out.println(dir1.isDirectory()); //判断是否是文件夹

      File dir2 = new File("zzz");
      System.out.println(dir2.isDirectory());
      
      System.out.println(dir1.isFile());              //判断是否是文件
      System.out.println(dir2.isFile());
    

    }
    }

19.18_File类(File类的获取功能)

  • A:获取功能
    • public String getAbsolutePath():获取绝对路径
      getAbsolutPath()与getPath()使用注意点

          !!!  在一道题中,我看到老师直接System.out.println(new File()),奇诡哎,后来发现它重现了toString方法,又发现toString方法ruturn getPath()但是当时我做题时得到的却是绝对路径,后面才知道原来getPath()是你传相对路径就打印相对,传绝对就打印绝对,而getAbsolutePath()是无论怎样返回绝对路径,注意File对象可以用getFile()得到他的文件名,不是路径值。  那道题是那一道?对,就是21.17遍历一个路径下所有指定后缀文件名的文件,要输出文件路径时产生的疑惑。
       * public String getPath():获取路径 !!!获取构造方法传入的路径
      
    • public String getName():获取名称 !!!注意要和toString方法区分
      file类获取长度单位是?

    • public long length():获取长度。字节数

    • public long lastModified():获取最后一次的修改时间,毫秒值

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

    • public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组 !!!listFiles() 只是能得到那一层的文件对象而已,并不是我想的可以深入多层查找。

  • B:案例演示
    • File类的获取功能
      案例:
      package com.heima.file;
      import java.io.File;
      import java.text.SimpleDateFormat;
      import java.util.Date;
      public class Demo5_FileMethod {
      public static void main(String[] args) {
      //demo1();
      demo2();
      }
      public static void demo2() {
      File dir = new File("F:/双元课堂/day19/video");
      String[] arr = dir.list(); //仅为了获取文件名

      for (String string : arr) {
      System.out.println(string);
      }

      File[] subFiles = dir.listFiles();

      for (File file : subFiles) { //获取文件对象
      System.out.println(file);
      }
      }
      public static void demo1() {
      File file1 = new File("ccc.txt");
      File file2 = new File("D:\双元课堂\day19\ccc.txt");
      //System.out.println(file1.getAbsolutePath()); //获取绝对路径
      //System.out.println(file2.getAbsolutePath());

      //System.out.println(file1.getPath()); //获取构造方法中传入路径
      //System.out.println(file2.getPath());

// System.out.println(file1.getName()); //获取文件或者文件的名字
// System.out.println(file2.getName());
//
// System.out.println(file1.length());

    Date d = new Date(file1.lastModified());                //文件的最后修改时间
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    System.out.println(sdf.format(d));
}

}

19.19_File类(输出指定目录下指定后缀的文件名)

  • A:案例演示
    • 需求:判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
      案例:
      package com.heima.test;
      import java.io.File;
      import java.io.FilenameFilter;
      public class Test3 {
      public static void main(String[] args) {
      File dir = new File("E:\");

// String[] arr = dir.list(); //获取e盘下所有的文件或文件夹
// for (String string : arr) {
// if(string.endsWith(".jpg")) {
// System.out.println(string);
// }
// }

    File[] subFiles = dir.listFiles();          //获取e盘下所有的文件或文件夹对象
    
    for (File subFile : subFiles) {
        if(subFile.isFile() && subFile.getName().endsWith(".jpg")) {
            System.out.println(subFile);
        }
    }       
}

}

19.20_File类(文件名称过滤器的概述及使用)

  • A:文件名称过滤器的概述

    • public String[] list(FilenameFilter filter)
    • public File[] listFiles(FileFilter filter)
  • B:文件名称过滤器的使用

    • 需求:判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
  • C:源码分析

    • 带文件名称过滤器的list()方法的源码
      案例:
      package com.heima.test;
      import java.io.File;
      import java.io.FilenameFilter;
      public class Test3 {
      public static void main(String[] args) {
      File dir = new File("E:\");

      String[] arr = dir.list(new FilenameFilter() {

        @Override
        public boolean accept(File dir, String name) {
            //System.out.println(dir);
            //System.out.println(name);
            File file = new File(dir, name);
            return file.isFile() && file.getName().endsWith(".jpg");
        }
      

      });

      for (String string : arr) {
      System.out.println(string);
      }
      }
      }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容