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());
}
} - File类的判断功能
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:\");
- 需求:判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
// 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);
}
}
}
-