赞
踩
目录
扩展知识: 路径:
- 绝对路径:带盘符的。
- 相对路径:不带盘符的,默认到当前项目下去找。
方法名称 | 说明 |
public File ( String pathname ) | 根据文件路径创建文件对象 |
public File ( String parent,String child ) | 根据父路径名字符串和子路径名字符串创建文件对象 |
public File ( File parent,String child ) | 根据父路径对应文件对象和子路径名字符串创建文件对象 |
- public class FileDemo01 {
- public static void main(String[] args) {
- // 1.根据字符串表示的路径
- // 变成File对象
- String str = "C:\\Users\\alienware\\Desktop\\a.txt";
- File f1 = new File(str);
- System.out.println(f1); // C:\Users\alienware\Desktop\a.txt
- // 将字符串变成File对象 就可以使用File对象方法
-
- // 2.根据父路径和子路径名称创建文件对象
- // 父路径:C:\Users\alienware\Desktop
- // 子路径:a.txt
-
- String parent = "C:\\Users\\alienware\\Desktop";
- String child = "a.txt";
- File f2 = new File(parent, child);
- System.out.println(f2); // C:\Users\alienware\Desktop\a.txt
-
- // \:转义字符
- File f3 = new File(parent + "\\" + child);
-
- // 3.把一个File表示的路径和String表示路径进行拼接
- File parent2 = new File("C:\\Users\\alienware\\Desktop");
- String child2 = "a.txt";
- File f4 = new File(parent2, child2);
- System.out.println(f4);
- }
- }
方法名称 | 说明 |
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 ( ) | 返回文件的最后修改时间(时间毫秒值) |
判断:
- public class FileDemo02 {
- public static void main(String[] args) {
- //1.对文件的路径进行判断
- File f1 = new File("D:\\aaa\\a.txt");
- System.out.println(f1.isDirectory()); //false
- System.out.println(f1.isFile()); //true
- System.out.println(f1.exists()); //true
-
- //2.对文件夹的路径进行判断
- File f2 = new File("D:\\aaa\\bbb");
- System.out.println(f1.isDirectory()); //true
- System.out.println(f1.isFile()); //false
- System.out.println(f1.exists()); //true
-
- //3.对不存在的路径进行判断
- File f3 = new File("D:\\aaa\\c.txt");
- System.out.println(f1.isDirectory()); //false
- System.out.println(f1.isFile()); //false
- System.out.println(f1.exists()); //false
- }
- }
获取:
- public class FileDemo03 {
- public static void main(String[] args) {
- // 1.length 返回文件大小
- // 细节: 方法只能返回文件大小,单位是字节
- // 方法无法获取文件夹大小
- // 如果想要获取文件夹大小,需要将文件夹内所有文件大小进行累加
- File f1 = new File("D:\\aaa\\a.txt"); // 文件中有四个字
- long len = f1.length();
- System.out.println(len); // 12 (个字节)
-
- File f2 = new File("D:\\aaa\\bbb");
- long len2 = f2.length();
- System.out.println(len2); // 0
-
- // 2.getAbsolutePath 返回文件绝对路径
- File f3 = new File("D:\\aaa\\a.txt");
- String path1 = f3.getAbsolutePath();
- System.out.println(path1); // D:\aaa\a.txt
-
- // 当前路径下
- File f4 = new File("java02\\a.txt");
- String path2 = f4.getAbsolutePath();
- System.out.println(path2); // C:\Users\123456\eclipse-workspace\java02\java02\a.txt
-
- // 3.getPath 返回定义文件时使用的路径
- File f5 = new File("D:\\aaa\\a.txt");
- String path3 = f5.getPath();
- System.out.println(path3); // D:\aaa\a.txt
-
- // 当前路径下
- File f6 = new File("java02\\a.txt");
- String path4 = f6.getPath();
- System.out.println(path4); // java02\a.txt
-
- // 4.getName 获取文件名
- // a :真正文件名
- // txt : 文件扩展名
- File f7 = new File("D:\\aaa\\a.txt");
- String name = f7.getName();
- System.out.println(name); // a.txt
-
- // 5.lastModified 返回文件最后修改时间
- File f8 = new File("D:\\aaa\\a.txt");
- long time = f8.lastModified();
- System.out.println(time); // 1667380952425 (毫秒值)
- }
- }
方法名称 | 说明 |
public boolean createNewFile ( ) | 创建一个新的空的文件 |
public boolean mkdir ( ) | 创建单级文件夹 |
public boolean mkdirs ( ) | 创建多级文件夹 |
public boolean delete ( ) | 删除文件、空文件夹 |
注意:delete()方法默认只能删除文件和空文件夹,delete方法直接删除不走回收站。
- public class FileDemo04 {
- public static void main(String[] args) throws IOException {
- // 1. createNewFile 创建新的空的文件
- // 细节1:如果当前路径表示文件时不存在的,则创建成功,返回true; 否则,返回false
- // 细节2:如果父路径不存在,那么方法会有异常
- // 细节3:创建的一定是文件,如果路径不包含后缀名,则是一个没有后缀的文件
- File f1 = new File("D:\\aaa\\c.txt");
- boolean b1 = f1.createNewFile();
- System.out.println(b1);
-
- // 2.mkidr 创建单级文件夹(目录)
- // 细节1:windows当中路径是唯一的,如果当前路径已经存在,则创建失败,返回false
- // 细节2:只能创建单级文件夹,无法创建多级文件夹
- File f2 = new File("D:\\aaa\\ddd");
- boolean b2 = f2.mkdir();
- System.out.println(b2); // false
-
- // 3.mkidrs 创建多级文件夹
- // 细节: 既可以创建单级文件夹,也可以创建多级文件夹
- File f3 = new File("D:\\aaa\\aaa\\bbb\\ccc");
- boolean b3 = f3.mkdirs();
- System.out.println(b3); // true
-
- // 4.delete 删除文件、空文件夹
- // 细节: 如果删除的是文件,则直接删除,不走回收站
- // 如果删除的是空文件夹,则直接删除,不走回收站
- // 如果删除的是有内容的文件夹,则删除失败
- File f4 = new File("D:\\aaa\\a.txt");
- boolean b4 = f4.delete();
- System.out.println(b4);
- }
- }
方法名称 | 说明 |
public File [ ] listFiles ( ) | 获取当前该路径下所有内容 |
注意:
- 当调用者File表示的路径不存在时,返回null。
- 当调用者File表示的路径是文件时,返回null。
- 当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组。
- 当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回。
- 当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件。
- 当调用者File表示的路径是需要权限才能访问的文件夹时,返回null。
- public class FileDemo05 {
- public static void main(String[] args) {
- //1.创建file对象
- File f = new File("D:\\aaa");
-
- //2.调用方法
- //作用:获取文件夹中所有内容,把所有的内容存放到数组并返回
- File[] files = f.listFiles();
- for (File file : files) {
- //file依次表示文件夹中的每一个文件或者文件夹
- System.out.println(file);
- }
- }
- }
需求:在当前模块下的aaa文件夹中创建一个a.txt文件。(不需要考虑子文件夹)
- public class FileTest {
- public static void main(String[] args) throws IOException {
- // 1.创建a.txt父级路径
- File file = new File("java02\\aaa");
- // 2.创建父级路径
- // 如果aaa是存在的,那么此时创建失败
- // 如果aaa是不存在的,那么此时创建成功
- file.mkdirs();
- // 3.拼接父级路径和子级路径
- File src = new File(file, "a.txt");
- boolean b = src.createNewFile();
- if (b) {
- System.out.println("创建成功");
- } else {
- System.out.println("创建失败");
- }
- }
- }
需求:定义一个方法找某一个文件夹中。是否有以avi结尾的电影。
- public class FileTest {
- public static void main(String[] args) throws IOException {
- File file = new File("D:\\aaa");
- boolean b = haveAvi(file);
- System.out.println(b);
- }
- //作用: 用来找某个文件夹中,是否有以avi结尾的电影
- //形参: 要查找的文件夹
- //返回值:查找的结果
- public static boolean haveAvi(File file) {
- //1.进入文件夹,获取其中的所有的内容
- File[] files = file.listFiles();
- for (File f : files) {
- if (f.isFile() && f.getName().endsWith(".avi")) {
- return true;
- }
- }
- //循环结束,仍未找到
- return false;
- }
- }
需求:找到电脑中所有以avi结尾的电影。(需要考虑子文件夹)
- public class FileTest {
- public static void main(String[] args) throws IOException {
- File src = new File("C:\\");
- findAvi(src);
- }
-
- public static void findAvi() {
- // 获取本地所有的盘符
- File[] arr = File.listRoots();
- for (File f : arr) {
- findAvi(f);
- }
- }
-
- public static void findAvi(File file) {
- // 1.进入文件夹
- File[] files = file.listFiles();
- // 2.遍历数组 得到file中每一个文件或文件夹
- if (files != null) {
- for (File f : files) { // files 可能为空指针
- if (f.isFile()) {
- // 3.判断: 是文件,执行业务逻辑
- String name = f.getName();
- if (name.endsWith(".avi")) {
- System.out.println(f);
- }
- } else {
- // 4.判断: 是文件夹,就可以递归
- // 细节: 再次调用方法,参数必须是file的次一级
- findAvi(f);
- }
- }
- }
- }
- }
需求:删除一个多级文件夹。
- public class FileTest {
- public static void main(String[] args) {
- // 如果我们想要删除一个含有内容的文件夹?
- // 1.先删除文件夹里面的所有的内容
- // 2.再删除文件夹自己
-
- File file = new File("D:\\aaa\\src");
- delete(file);
- // delete 只能删除文件和空的文件夹
- }
-
- // 作用:删除src文件夹
- // 参数 : 要删除的文件夹
- public static void delete(File src) {
- // 1.先删除文件夹内所有文件
- File[] files = src.listFiles();
- for (File file : files) {
- if (file.isFile()) {
- file.delete();
- } else {
- delete(file);
- }
- }
- // 2.再删除文件夹自己
- src.delete();
- }
- }
需求:统计一个文件夹的总大小。
- public class FileTest {
- public static void main(String[] args) {
-
- File file = new File("D:\\aaa\\src");
- long len = getLen(file);
- System.out.println(len);
-
- }
- //作用:统计一个文件夹的大小
- //形参: 要统计的文件夹
- //返回值: 文件夹大小
- public static long getLen(File src) {
- long len = 0;
- File[] files= src.listFiles();
- for(File file : files) {
- if (file.isFile()) {
- len = len + file.length();
- }else {
- len = len + getLen(file);
- }
- }
- return len;
- }
- }
需求:需求:统计一个文件夹中每种文件的个数并打印。(考虑子文件夹)
打印格式如下:
- txt:3个
- doc:4个
- jpg:6个
- public class FileTest {
- public static void main(String[] args) {
- // 统计 : 计数器思想
- File file = new File("D:\\aaa\\src");
- Map<String, Integer> hm = getCount(file);
- System.out.println(hm);
-
- }
-
- // 作用:统计一个文件夹中每种文件的个数
- // 形参: 要统计的文件夹
- // 返回值: 以用来统计的map集合(键:后缀名 值:次数)
- public static Map<String, Integer> getCount(File src) {
- // 定义集合用来统计
- HashMap<String, Integer> hm = new HashMap<>();
- // 进入src文件夹
- File[] files = src.listFiles();
- // 遍历
- for (File file : files) {
- if (file.isFile()) {
- String name = file.getName();
- String[] arr = name.split("\\.");
- if (arr.length >= 2) {
- String endName = arr[arr.length - 1];
- if (hm.containsKey(endName)) {
- // 存在
- int count = hm.get(endName);
- count++;
- hm.put(endName, count);
- } else {
- // 不存在
- hm.put(endName, 1);
- }
- }
- } else {
- // sonMap开麦女士子文件中每一种文件的个数
- Map<String, Integer> sonMap = getCount(file);
- Set<Map.Entry<String, Integer>> entries = sonMap.entrySet();
- for (Map.Entry<String, Integer> entry : entries) {
- String key = entry.getKey();
- int value = entry.getValue();
- if (hm.containsKey(key)) {
- // 存在
- int count = hm.get(key);
- count = count + value;
- hm.put(key, count);
- } else {
- // 不存在
- hm.put(key, value);
- }
- }
-
- }
- }
- return hm;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。