⑤File(文件)

目录

概述

构造方法

常用API方法

File[] listFiles()

拷贝整个目录下的文件


File类

概述

java.util.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找.删除等操作

Java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作。

1. File类和四大家族没有关系,所有File类不能完成文件的读写

2. File对象代表,文件和路径名的抽象表示形式

3. 一个File对象可能是目录也可能是文件,File只是一个路径名的抽象表示形式

4. 掌握File类的常用方法

boolean exists()测试此抽象路径名表示的文件或目录是否存在
boolean createNewFile()以文件形式创建
boolean mkdir()创建此抽象路径名指定的目录
boolean mkdirs()创建此抽象路径名指定的目录,包括所有必需但不存在的父目录
String getAbsolutePath()返回此抽象路径名的绝对路径名字符串
String getParent()返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null
String getName()返回由此抽象路径名表示的文件或目录的名称
boolean isDirectory()测试此抽象路径名表示的文件是否是一个目录
boolean isFile()测试此抽象路径名表示的文件是否是一个标准文件
long length()返回由此抽象路径名表示的文件的长度
long lastModified()返回此抽象路径名表示的文件最后一次被修改的时间

File类是一个与系统无关的类,,任何的操作系统都可以使用这个类中的方法.

构造方法

  • public File(String pathname) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

  • 如果字符串代表的文件存在那么就指向这个文件,如果不存在,就会创建该文件

  • public File(String parent,String child):根据parent路径名字符串和child路径名字字符串创建一个新File实例

代码实例:

常用API方法

package File;

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

public class FileTest01 {
    public static void main(String[] args) throws IOException {
        //在D盘创建文件目录file
        File f1  = new File("D:\\file");
        System.out.println(f1.exists());//判断是否存在的

        //可以创建多重目录
        File f2 = new File("D:\\file\\11");

        if(!f1.exists()){
            f1.mkdir();//以目录的形式创建
        }
        if (!f2.exists()){
            f2.mkdirs();
        }
        File f3 = new File("D:\\Note\\tde.txt");
        String parentPath = f3.getParent();
        System.out.println(parentPath);//D:\Note
        File parentFile = f3.getParentFile();
        System.out.println("获取绝对路径" + parentFile.getAbsolutePath());//获取绝对路径D:\Note

        File f4 = new File("myfile");//在当前项目里创建文件
        System.out.println("绝对路径"+ f4.getAbsolutePath());//绝对路径D:\Learn\LearnDemoProject\Java\myfile
    }
}

package File;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileTest02 {
    public static void main(String[] args) {
        File myFile = new File("myFile");

        System.out.println(myFile.getName()); //获取文件名

        System.out.println(myFile.isDirectory()); //判断是不是一个目录

        System.out.println(myFile.isFile()); //判断是不是一个文件

        System.out.println(myFile.lastModified()); //获取文件最后一次修改的时间

        //将毫秒转换为日期
        Date time = new Date(myFile.lastModified());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        String strtime = sdf.format(time);
        System.out.println(strtime);

        //获取文件大小的
        System.out.println(myFile.length());
    }
}

File[] listFiles()

返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件

package File;

import java.io.File;

public class FileTest03 {
    public static void main(String[] args) {
        //File[] listFile()
        //获取当前目录下的所有子文件
        File f = new File("D:\\");
        File[] files = f.listFiles();
        for (File file:files){
            System.out.println(file.getAbsoluteFile());//所有子文件
        }
    }
}

拷贝整个目录下的文件

package File;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileTest04 {
    public static void main(String[] args) {
        //拷贝源和拷贝目标
        //调用方法拷贝
        File f1 = null;
        File f2 = null;

        f1 = new File("D:\\Note");
        f2 = new File("D:\\java");
        CopyDir(f1,f2);
    }

    /**
     * 拷贝目录
     * @param src
     * @param dest
     */
    private static void CopyDir(File src, File dest) {
        if (src.isFile()){
            //src是一个文件的话,递归结束
            //是文件的时候需要拷贝
            FileInputStream fileInputStream = null;
            FileOutputStream fileOutputStream = null;
            try {
                fileInputStream = new FileInputStream(src);
                byte[] bytes = new byte[1024*1024];
                String path = dest.getAbsolutePath().endsWith("\\")?dest.getAbsolutePath(): dest.getAbsolutePath() + "\\" + src.getAbsolutePath().substring(3);
                fileOutputStream = new FileOutputStream(path);
                int readCount = 0;
                while((readCount = fileInputStream.read(bytes))!= -1){
                    fileOutputStream.write(bytes,0,readCount);
                }
                fileOutputStream.flush();
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                if (fileInputStream != null){
                    try {
                        fileInputStream.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (fileOutputStream != null){
                    try {
                        fileOutputStream.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return;
        }

        File[] files = src.listFiles();  //获取源下面的子目录
        for (File file: files){
            System.out.println(file.getAbsolutePath());//获取所有文件的绝对路径
            //可能是文件、可能是目录
            if (file.isDirectory()){
                String srcDir = file.getAbsolutePath();//获取源目录的绝对路径
                System.out.println(srcDir);
                //endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False
                String destDir = dest.getAbsolutePath().endsWith("\\")?dest.getAbsolutePath(): dest.getAbsolutePath() + "\\" + srcDir.substring(3);
                System.out.println(destDir);
                File newFile = new File(destDir);
                if (!newFile.exists()){
                    newFile.mkdirs();
                }
            }
            CopyDir(file,dest);
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值