栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java笔记 IO —— File

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java笔记 IO —— File

Java中用File类来抽象的表示硬盘上的各种文件,File是文件和目录(文件夹)路径名的抽象表现形式

File类
        • File类的构造方法:
        • File类的创造功能
        • 删除功能
        • 重命名功能:
        • 判断功能
        • 获取功能一
        • 获取功能二
          • 例子
            • 方法一、遍历File数组
            • 方法二、文件名称过滤器

File类的构造方法:
  1. File(String pathname)
  2. File(String parent,String child)
  3. File(File parent,String child)
import java.io.File;

public class Demo1 {
    public static void main(String[] args) {
        //public File(String pathname)
        //将文件路径D:javaa.txt封装成一个File对象
        File file1 = new File("D:\java\a.txt");
        System.out.println(file1); //D:javaa.txt

        //public File(String parent,String child)
        //根据一个目录和一个子文件或目录得到一个File对象
        File file2 = new File("D:\java","a.txt");
        System.out.println(file2); //D:javaa.txt

        //public File(File parent,String child)
        //根据一个父的File对象和一个子文件或目录得到一个File对象
        File file3 = new File("D:\java"); //父的File对象
        File file4 = new File(file3,"Demo"); //子的目录
        System.out.println(file4); //D:javaDemo
    }
}

File类的创造功能

public boolean createNewFile()
public boolean mkdir()
public boolean mkdirs()

public class Demo2 {
    public static void main(String[] args) {
        //createNewFile()创建一个新的文件
        //如果要创建的文件已经存在,那么既不会创建也不会报错
        //如果要创建的文件所在的目录不存在则会报错
        File file1 = new File("D:\java\b.txt");
        try {
            file1.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

package review.FileDemo;

import java.io.File;
import java.io.IOException;

public class Demo2 {
    public static void main(String[] args) {
        //mkdir()在指定目录下创建文件夹
        //比如在D:java目录下创建文件夹demo1
        File file2 = new File("D:\java\demo1");
        //要创建的文件夹已经存在时不会创建
        //前置目录不存在或者错误时不会创建
        //创建成功返回true,创建失败或没有创建则返回false
        System.out.println(file2.mkdir());


		//mkdirs()创建多级文件夹
        File file3 = new File("D:\java\test1\test2\test3");
        //创建成功返回true,创建失败返回false
        System.out.println(file3.mkdirs());
    }
}



注意:

package review.FileDemo;

import java.io.File;
import java.io.IOException;

public class Demo2 {
    public static void main(String[] args) {
        //注意分辨创建的是文件还是文件夹
        //创建文件的时候需要跟上后缀名
        //如果创建文件时加上后缀名,后缀名部分会被认为是文件夹名字的一部分
        File file4 = new File("D:\java\test1.txt");
        try {
            System.out.println(file4.createNewFile());
        } catch (IOException e) {
            e.printStackTrace();
        }
        File file5 = new File("D:\java\test2.txt");
        System.out.println(file5.mkdir());


    }
}



结果是分别创建了一个叫 test1.txt 文件和一个叫 test2.txt 的文件夹
需要注意的是,win10中,文件夹与文件不能同名

删除功能

public boolean delete()

package review.FileDemo;

import java.io.File;
import java.io.IOException;

public class Demo3 {
    public static void main(String[] args) {
    //一、删除文件
        File file1 = new File("D:\java\test1.txt");
        try {
            file1.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //删除成功返回true,删除失败返回false
        System.out.println(file1.delete()); //true

	//二、删除文件夹
        File file2 = new File("D:\java\test1\test2");
        file2.mkdirs();
        //只有文件夹中为空时才能删除文件夹
        File test1 = new File("D:\java\test1");
        System.out.println(test1.delete()); //false,删除失败因为test1文件夹不为空
        
        File test2 = new File("D:\java\test2");
        System.out.println(test2.delete()); //false,删除失败因为路径不存在
        
        File test3 = new File("D:\java\test1\test2");
        System.out.println(test3.delete()); //true,删除成功
    }
}

重命名功能:

public boolean renameTo(File dest)

import java.io.File;

public class Demo4 {
    public static void main(String[] args) {
        //renameTo将file1对象的名字改为file2的对象名
        File file1 = new File("D:\java\a.txt");
        File file2 = new File("D:\java\b.txt");
        //修改成功返回true,失败为false
        file1.renameTo(file2);
    }
}

判断功能

public boolean isDirectory()
public boolean isFile()
public boolean exists()
public boolean canRead()
public boolean canWrite()
public boolean isHidden()

package review.FileDemo;

import java.io.File;

public class Demo5 {
    public static void main(String[] args) {
        File file1 = new File("D:\java\a.txt");

        //判断是不是文件夹
        System.out.println(file1.isDirectory()); //false

        //判断是不是文件
        System.out.println(file1.isFile()); //true
 
        //判断文件是否存在
        System.out.println(file1.exists()); //true

        //判断是否可读
        System.out.println(file1.canRead()); //true

        //判断是否可写
        System.out.println(file1.canWrite()); //true

        //判断是否隐藏
        System.out.println(file1.isHidden()); //false

        //当file1不存在时,上面全是false
    }
}

获取功能一

public String getAbsolutePath()
public String getPath()
public String getName()
public long length()
public long lastModified()

package review.FileDemo;

import java.io.File;
import java.io.IOException;

public class Demo6 {
    public static void main(String[] args) {
        //在idea的当前项目的src文件夹中创建test.txt文件
        File file = new File("src\test.txt");
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }

        //getAbsolutePath() 获取绝对路径,也就是获取完整路径
        System.out.println(file.getAbsolutePath()); //F:idea2018.1workplaceDemosrctest.txt

        //getPath() 获取相对路径
        System.out.println(file.getPath()); //srctest.txt

        //getName() 获取文件名称
        System.out.println(file.getName()); //test.txt

        //long length() 获取文件的字节大小
        System.out.println(file.length()); //0

        //long lastModified() 指定文件最后一次被修改的时间戳
        System.out.println(file.lastModified()); //1634645504934

    }
}

获取功能二

public String[] list()
public File[] listFiles()

package review.FileDemo;

import java.io.File;

public class Demo7 {
    public static void main(String[] args) {
        File file = new File("D:\java\Demo\file1");
        //String[] --- list()
        //获取指定目录下的所有文件和文件夹的名称,并将所有名称放入String类型数组
        String[] list = file.list();
        for(String s : list){
            System.out.println(s);
        }

        System.out.println("----------------");

        //File[] --- listFiles()
        //将指定目录下的所有文件和文件夹都放入File类型数组
        File[] files = file.listFiles();
        for(File file1 : files){
            System.out.println(file1.getName());
        }

    }
}

例子

判断file1文件夹下面有没有以JPG为后缀名结尾的文件,如果有则打印出来

方法一、遍历File数组
package review.FileDemo;

import java.io.File;

public class Demo8 {
    public static void main(String[] args) {
        File file = new File("D:\java\Demo\file1");

        File[] files = file.listFiles();
        for(File file1 : files){
            if(file1.isFile()){
                if(file1.getName().endsWith(".JPG")){
                    System.out.println(file1.getName());
                }
            }
        }
    }
}

方法二、文件名称过滤器
package review.FileDemo;

import java.io.File;
import java.io.FilenameFilter;

public class Demo8 {
    public static void main(String[] args) {
        File f = new File("D:\java\Demo\file1");
        //方法二
//获取file1目录下所有的文件和文件夹名称,并放入String类型数组中
//将每一个对象名称,按照FilenameFilter判断的结果决定是否加入数组
        String[] list = f.list(new FilenameFilter() {
            @Override
//这里是一个boolean类型的判断方法,返回true则将文件或文件夹名称加入数组,否则不添加
            public boolean accept(File dir, String name) {
                File file1 = new File(dir,name);
//两个判断条件,当前File对象是一个文件,并且后缀名为.JPG
                boolean b1 = file1.isFile();
                boolean b2 = file1.getName().endsWith(".JPG");
                return b1 && b2;
            }
        });
        for(String s : list){
            System.out.println(s);
        }

    }
}

结果跟方法一结果相同

这里是list的源码,首先this.list()也就是用一开始的File对象 f.list(),生成当前目录的所有文件和文件夹名字放入String names[]数组中
实现接口的具体方法public boolean accept(File dir, String name)的参数列表中
File dir就是this,也就是 File f 对应的文件目录
String name 就是names[ i ] 也就是当前放入accept方法里面进行筛选判断的文件对象,如果返回true则将此对象放入数组中

list()方法最后返回的是一个数组

public String[] list(FilenameFilter filter) {
        String names[] = list();
        if ((names == null) || (filter == null)) {
            return names;
        }
        List v = new ArrayList<>();
        for (int i = 0 ; i < names.length ; i++) {
            if (filter.accept(this, names[i])) {
                v.add(names[i]);
            }
        }
        return v.toArray(new String[v.size()]);
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/336540.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号