File文件
路径:
- 相对路径:以 当前工作目录(或指定的基准目录)为起点,描述目标文件或目录的位置,不包含根目录信息,仅表示与基准目录的相对位置关系。
- 绝对路径:从文件系统的 根目录 开始(如 Windows 的盘符或 Linux 的
/
),完整描述文件或目录位置的路径,包含从根目录到目标的 完整层级结构。C:.......;D:......
File:
- File对象就表示一个路径,可以是文件的路径,也可以是文件夹的路径
- 这个路径可以是存在的,也可以是不存在的
-
方法名称 说明 public File(String pathname) 根据文件路径创建文件对象 public File(String parent, String child) 根据父路径名字符串和子路径名字符串创建文件对象 public File(File parent, String child) 根据父路径对应文件对象和子路径名字符串创建文件对象
下面把这三种对象的创建过程展示一下:
package www.FileClass.com;import java.io.File;public class FileDemo1 {public static void main(String[] args) {//public File(String pathname) 根据文件路径创建文件对象
//public File(String parent, String child) 根据父路径名字符串和子路径名字符串创建文件对象
//public File(File parent, String child) 根据父路径对应文件对象和子路径名字符串创建文件对象//1.根据字符串所表示的路径,变成File对象(第一个构造)String str="F:\\Test\\w.txt ";//把字符串放进FIle就代表文件的路径File file=new File(str);System.out.println(file);//2.父级路径:F:\Test(第二个构造)//子级路径:w.txtString str1="F:\\Test";String str2="w.txt";File file1=new File(str1,str2);System.out.println(file1);//3.把一个File表示的路径和String表示路径进行拼接File file2=new File("F:\\Test");String str3="w.txt";File file3=new File(file2,str3);System.out.println(file3);}
}
File表示什么?
- File对象表示路径,可以是文件,也可以是文件夹,这个路径可以是存在的,也可以是不存在的
绝对路径和相对路径的意思?
绝对路径带盘符,相对路几个不带盘符
File的常见成员方法:
判断获取:
方法名称 | 说明 |
---|---|
public boolean isDirectory() | 判断此路径名表示的 File 是否为文件夹 |
public boolean isFile() | 判断此路径名表示的 File 是否为文件 |
public boolean exists() | 判断此路径名表示的 File 是否存在 |
public long length() | 返回文件的大小(字节数量) |
public String getAbsolutePath() | 返回文件的绝对路径 |
public String getPath() | 返回定义文件时使用的路径 |
public String getName() | 返回文件的名称,带后缀 |
public long lastModified() | 返回文件的最后修改时间(时间毫秒值) |
前三个方法示例
package www.FileClass.com;import java.io.File;public class FileDemo2 {public static void main(String[] args) {
// public boolean isDirectory() 判断此路径名表示的 File 是否为文件夹
// public boolean isFile() 判断此路径名表示的 File 是否为文件
// public boolean exists() 判断此路径名表示的 File 是否存在//对文件的路径进行判断//我已经在这个路径创建了txt文件File file = new File("E:\\zjhapp\\aaa.txt");System.out.println(file.isDirectory());//是否是文件夹falseSystem.out.println(file.isFile());//是否是文件trueSystem.out.println(file.exists());//是否存在true//对文件夹的路径进行判断File file1 = new File("E:\\zjhapp");System.out.println(file1.isDirectory());//是否是文件夹trueSystem.out.println(file1.isFile());//是否是文件falseSystem.out.println(file1.exists());//是否存在true//对不存在的路径进行判断File file2 = new File("E:\\www");System.out.println(file2.isDirectory());//是否是文件夹falseSystem.out.println(file2.isFile());//是否是文件falseSystem.out.println(file2.exists());//是否存在false}
}
后四个方法示例
package www.FileClass.com;import java.io.File;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class FileDemo3 {public static void main(String[] args) {
// public long length() 返回文件的大小(字节数量)
// public String getAbsolutePath() 返回文件的绝对路径
// public String getPath() 返回定义文件时使用的路径
// public String getName() 返回文件的名称,带后缀
// public long lastModified() 返回文件的最后修改时间(时间毫秒值)//1.length 返回文件的大小(字节数量)//只能获取文件的大小,单位是字节//无法获取文件夹的大小File file = new File("E:\\zjhapp\\aaa.txt");long len=file.length();System.out.println(len);System.out.println("======================");
// 2.getAbsolutePath() 返回文件的绝对路径File file1 = new File("E:\\zjhapp\\aaa.txt");String absolutePath = file1.getAbsolutePath();System.out.println(absolutePath);//3.public String getPath() 返回定义文件时使用的路径File file2 = new File("E:\\zjhapp\\aaa.txt");String path = file2.getPath();//定义文件的事实和System.out.println(absolutePath);// 4.getname() 获取名字如果文件有拓展名就会把拓展名也提取出来File file3=new File("E:\\zjhapp\\aaa.txt");String name=file3.getName();System.out.println(name);// 5.public long lastModified() 返回文件的最后修改时间(时间毫秒值)File file4=new File("E:\\zjhapp\\aaa.txt");long time=file4.lastModified();DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String date = LocalDateTime.now().format(formatter);System.out.println(date);}
}
创建删除
方法名称 | 说明 |
---|---|
public boolean createNewFile() | 创建一个新的空的文件 |
public boolean mkdir() | 创建单级文件夹 |
public boolean mkdirs() | 创建多级文件夹 |
public boolean delete() | 删除文件、空文件夹 |
前三个创建方法
package www.FileClass.com;import java.io.File;
import java.io.IOException;public class FileDemo4 {public static void main(String[] args) throws IOException {
// public boolean createNewFile() 创建一个新的空的文件
// public boolean mkdir() 创建单级文件夹
// public boolean mkdirs() 创建多级文件夹
// public boolean delete() 删除文件、空文件夹//delete默认只能删除文件和文件夹,detele方法直接删除不走回收站// 1.createNewFile() 创建一个新的空的文件
// 文件不存在则创建成功,存在就创建失败
// 如果父路径不存在,那么就会有异常IOException
// createNewFile()方法创建的肯定是文件,如果文件中不带后缀名,则创建一个不带后缀名的文件File file = new File("E:\\zjhapp\\www.txt");boolean b=file.createNewFile();System.out.println(b);// mkdir() 创建"单级文件夹"
// 文件名不能重复File file1 = new File("E:\\zjhapp\\aaa");boolean c=file1.mkdir();System.out.println(c);
// mkdirs() 创建多级文件夹
// 既可以创造单极的也可以创造多级的File file2 = new File("E:\\zjhapp\\qq\\ww");boolean d=file2.mkdirs();System.out.println(d);}
}
删除方法
package www.FileClass.com;import java.io.File;public class FileDemo5 {public static void main(String[] args) {/*pubic boolean delete() 删除文件空文件夹如果删除的是文件,则直接删除,不走回收站如果删除的是空文件夹,直接删除不走回收站删除有内容的文件夹,直接删除失败*///创建File对象File file = new File("E:\\zjhapp\\aaa.txt");//删除:boolean b = file.delete();System.out.println(b);}
}
获取并遍历
方法名称 | 说明 |
---|---|
public static File[] listRoots() | 列出可用的文件系统根 |
public String[] list() | 获取当前该路径下所有内容 |
public String[] list(FilenameFilter filter) | 利用文件名过滤器获取当前该路径下所有内容 |
public File[] listFiles() | 获取当前该路径下所有内容 |
public File[] listFiles(FileFilter filter) | 利用文件名过滤器获取当前该路径下所有内容 |
public File[] listFiles(FilenameFilter filter) | 利用文件名过滤器获取当前该路径下所有内容 |
第一第二第三方法
package www.FileClass.com;import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;public class FileDemo7 {public static void main(String[] args) {
// public static File[] listRoots() 列出可用的文件系统根
// public String[] list() 获取当前该路径下所有内容
// public String[] list(FilenameFilter filter) 利用文件名过滤器获取当前该路径下所有内容
// public File[] listFiles() 获取当前该路径下所有内容
// public File[] listFiles(FileFilter filter) 利用文件名过滤器获取当前该路径下所有内容
// public File[] listFiles(FilenameFilter filter) 利用文件名过滤器获取当前该路径下所有内容//1.listRoots 获取系统中所有的盘符,listRoots是静态方法File[] arr = File.listRoots();System.out.println(Arrays.toString(arr));//2.list() 获取当前该路径下所有内容(仅能获取名字)File f1 = new File("E:\\zjhapp");String[] arr2 = f1.list();for (String s : arr2) {System.out.println(s);}System.out.println("================");//3.list(FilenameFilter filter) 利用文件名过滤器获取当前该路径下所有内容//需求:我现在要获取D:\\aaa文件夹里面所有的txt文件File f2 = new File("E:\\zjhapp");String[] list = f2.list(new FilenameFilter() {// accept方法形参,依次表示zjhapp文件夹里面的每一个文件或者文件夹路径
// 参数一:父级路径
// 参数二:子级路径
// 返回值:如果返回值为true,就表示当前路径被保留
// 反之,当前路径不会被保留@Overridepublic boolean accept(File dir, String name) {File f = new File(dir, name);return f.isFile() && f.getName().endsWith(".txt");}});System.out.println(Arrays.toString(list));}
}
第四个方法:
package www.FileClass.com;import java.io.File;public class FileDemo6 {public static void main(String[] args) {
// public File[] listFiles() 获取当前该路径下所有内容//1.创建File对象//当调用者 File 表示的路径不存在时,返回 null//当调用者 File 表示的路径是文件时,返回 null//当调用者 File 表示的路径是一个空文件夹时,返回一个长度为 0 的数组//当调用者 File 表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在 File 数组中返回//当调用者 File 表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在 File 数组中返回,包含隐藏文件//当调用者 File 表示的路径是需要权限才能访问的文件夹时,返回nullFile file = new File("E:\\zjhapp");//2.获取zjhapp文件夹中的所有内容,把所有内容放到数组当中返回File[] files = file.listFiles();for (File file1 : files) {//file1:依次表示zjhapp文件夹中的每一个文件或者文件夹System.out.println(file1);}}
}
package www.FileClass.com;import java.io.File;public class FIleDemo8 {public static void main(String[] args) {
// 掌握: File[] listFiles() 获取当前该路径下所有内容
// public File[] listFiles(FileFilter filter) 利用文件名过滤器获取当前该路径下所有内容
// public File[] listFiles(FilenameFilter filter) 利用文件名过滤器获取当前该路径下所有内容File file = new File("E:\\zjhapp");File[] files = file.listFiles();for (File file1 : files) {if(file1.isFile()&&file1.getName().endsWith(".txt"))System.out.println(file1);}}
}
第五六个方法
package www.FileClass.com;import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.util.Arrays;public class FileDemo9 {public static void main(String[] args) {// public File[] listFiles(FileFilter filter) 利用文件名过滤器获取当前该路径下所有内容
// public File[] listFiles(FilenameFilter filter) 利用文件名过滤器获取当前该路径下所有内容File file = new File("E:\\zjhapp");
// 调用listFiles(FileFilter filter)File[] files = file.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {return pathname.isFile()&&pathname.getName().endsWith(".txt");}});System.out.println(Arrays.toString(files));// 调用listFiles(FilenameFilter filter)file.listFiles(new FilenameFilter() {@Override//第一个是父级路径,第二个是子级路径public boolean accept(File dir, String name) {File f = new File(dir, name);return f.isFile()&&f.getName().endsWith(".txt");}});System.out.println(Arrays.toString(files));}
}