java的IO流——File类的实例化和常用方法

File类

  • File类是一个对象,代表一个文件或者文件目录
  • File类在java.io包下
  • File类中涉及到关于文件或目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作,如果需要读取或写入文件内容,必须使用IO流来完成。
  • 后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的“终点”。

File类的实例化

构造器:

1、File(String filePath)
2、File(String parentPath,String childPath)
3、File(File parentFile,String childPath)

相对路径:相较于某个路径下,指明的路径。
绝对路径:包含盘符在内的文件或文件目录的路径。

路径分隔符
路径中的每级目录之间用一个路径分隔符隔开。
路径分隔符和系统有关
windows和DOS系统默认使用"“来表示
UNIX和URL使用”/"来表示
java程序支持跨平台运行,因此路径分隔符要慎用
为了解决这个隐患,File类提供了一个常量:
public static final String separator。根据操作系统,动态的提供分隔符。
举例
在这里插入图片描述

 public void test(){
        //以下操作都在内存阶段,不涉及到磁盘文件
        //构造器1:
        File file1 = new File("hello.txt");
        File file2 = new File("C:\\study\\JAVAIO\\he.txt");

        System.out.println(file1);//hello.txt
        System.out.println(file2);//C:\study\JAVAIO\he.txt

        //构造器2:
        File file3 = new File("C:\\study","JAVAIO");
        System.out.println(file3);//C:\study\JAVAIO

        //构造器3:
        File file4 = new File(file3, "hi.txt");
        System.out.println(file4);//C:\study\JAVAIO\hi.txt
    }

File的常用方法

/*
    获取方法
     */
public void test2(){
        File file1 = new File("hello.txt");
        File file2 = new File("C:\\study\\JAVAIO\\he.txt");

        System.out.println(file1.getAbsolutePath());//获取绝对路径
        System.out.println(file1.getPath());//获取路径
        System.out.println(file1.getName());//获取名称
        System.out.println(file1.getParent());//获取上层文件目录路径。若无,返回null
        System.out.println(file1.length());//获取文件长度(即:字节数)。不能获取目录的长度。
        System.out.println(new Date(file1.lastModified()));//获取最后一次的修改时间,毫秒数,可以通过Date获取时间。

    }
 /*
    针对目录
    public String[] list():获取指定目录下的所有文件或者文件目录的名称数组
    public File[] listFiles():获取指定目录下的所有文件或者文件目录的File数组
     */
    @Test
    public void test3(){
        File file = new File("C:\\study\\Java");

        String[] str = file.list();//返回文件名称
        for (String str1:str){
            System.out.println(str1);
        }

        File[] f = file.listFiles();//返回File对象
        for (File f1:f){
            System.out.println(f1);
        }
    }
    /*
    public boolean renameTo(File dest):把文件重命名为指定的文件路径
    比如:file1.renameTo(file2)为例:
    要想保证返回true,需要file1在硬盘中是存在的,且file2不存在。
     */
    @Test
    public void test4(){
        File file1 = new File("hello.txt");
        File file2 = new File("C:\\study\\JAVAIO\\hi.txt");

        boolean b = file2.renameTo(file1);
        System.out.println(b);


    }
    /*
    判断功能:

     */
    @Test
    public void test5(){
        File file = new File("hello.txt");
        System.out.println(file.isDirectory());//判断是否是目录
        System.out.println(file.isFile());//判断是否是文件
        System.out.println(file.exists());//判断是否存在
        System.out.println(file.canRead());//判断是否可读
        System.out.println(file.canWrite());//判断是否可写
        System.out.println(file.isHidden());//判断是否隐藏


    }
    /*
    创建硬盘中对应的文件或文件目录:
    public boolean creatNewFile():创建文件,若文件存在,则不能创建,返回false
    public boolean mkdir():创建文件目录,如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。
    public boolean mkdirs():创建文件目录。如果上层文件目录不存在,一并创建。
    删除磁盘中的文件或目录
    public boolean delete():删除文件或者目录
          删除注意事项:java中的删除不走回收站。
     */
    @Test
    public void test6() throws IOException {
        //文件的创建和删除:
        File file1 = new File("hi.txt");
        if(!file1.exists()){
            file1.createNewFile();
            System.out.println("创建成功");
        }else{
            file1.delete();
            System.out.println("删除成功");
        }
        //创建目录
        File file2 = new File("C:\\study\\JAVAIO\\io");
        boolean mkdir = file2.mkdir();
        if (mkdir){
            System.out.println("创建成功");
        }

    }

main方法中绝对路径和单元测试的绝对路径不同点

public class FileTest1 {
    public static void main(String[] args) {
        File file = new File("hello.txt");//相较于当前工程,在main方法中
        System.out.println(file.getAbsolutePath());//C:\study\Java\TestProject\hello.txt

        File file1 = new File("javaIO\\hello.txt");//相较于Module,javaIO是Module名称
        System.out.println(file1.getAbsolutePath());//C:\study\Java\TestProject\javaIO\hello.txt
    }

    @Test
    public void test1(){
        File file = new File("hello.txt");//相较于当前Module,在单元测试
        System.out.println(file.getAbsolutePath());//C:\study\Java\TestProject\javaIO\hello.txt
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值