File对象实例化

三种构造器

File file = new File("C:\\Users\\Administrator\\Desktop\\数据结构代码\\algorithm");//绝对路径
File file1 = new File(file,"testtss.txt");//根据parent和child构造
File file2 = new File(file,"test");//相对路径

相对路径的例子:

用junit单元测试创建的文件在当前moudle下
	在main中创建的文件在当前project下

跨平台路径分隔符

File file3 = new File("D:" + File.separator + "io" + File.separator + "test11.txt")
  • File对象的实例化仅仅是内存层面开辟了一个空间
  • File对象可以存储文件,也可以存储文件目录
  • File对象表示的是路径的最后一个文件,例如:"C:\Users\Administrator\Desktop\数据结构代码\algorithm"的对象对其操作更改的是algorithm文件目录

部分API

方法

解释

备注

createTempFile


(String prefix, String suffix)

(String prefix, String suffix, File directory)

static方法,“创建空文件”

文件名前缀(最少3字符),文件名后缀

前缀,后缀,指定路径的File对象

deleteOnExit

run结束后就删掉

创建的方式是mkdirs,但删除时是只删除该File对象路径的最末尾文件

delete

删除File对象对应的文件or文件目录

必须保证是末梢路径,不然不能删除并且返回false

renameTo(File dest)

1,如果destFile对象与源文件File对象是在同一个路径下,那么renameTo的作用是重命名

2,如果目标文件与源文件不是在同一个路径下,那么renameTo的作用就是剪切,而且还不能操作文件夹。

见代码详解 1

getParent

getParentFile

返回父路径String

返回父路径File

用于同路径创建等操作

length

返回字节长度long

非空小文件的length返回值可能为0 2


应用

递归遍历

1,遍历删除

要求:

  • 遍历d:\io目录下的所有文件and文件目录名
  • 删除png,img格式的文件,并告知删除成功

代码示例:

public class FileTest1 {
    public static void intoDir(File f){//定义静态方法
            File[] files = f.listFiles();//罗列内部所有File对象
        for(File ff : files){
            if (ff.isFile()){
                System.out.println("文件" + ff.toString());
                /*****************删除img,png格式的图片文件**********/
                if(ff.toString().endsWith("img") || ff.toString().endsWith("png")){
                    ff.delete();
                    System.out.println("删除成功:"+ff.toString());
                }
                /****************************************************/
            }
            else{
                System.out.println("文件目录" + ff.toString());
                intoDir(ff);//递归
            }
        }
    }
    public static void main(String[] args) throws IOException {
    File file = new File("D:\\io");
   FileTest1.intoDir(file);//调用静态遍历方法
    }
}

file类中的方法 java java的file对象_java

2,遍历计算大小

要求:

  • 计算指定文件目录的大小
  • 删除空文件(不是删空的文件目录)

代码示例:

public class FileTest1 {
    public static long sumLength(File file){
        File[] files = file.listFiles();
        long sum = 0;
        for(File f : files){
            if (f.isFile()){
                /****判断是否为空文件,若是则删除并告知****/
                long length = f.length();
                if(length == 0){
                    f.delete();
                    System.out.println("删除空文件:"+f.toString());
                }
                else{
                    sum += length;
                }
                /*******************  *****************/
            }
            else{
                FileTest1.sumLength(f);
            }
        }
        return sum;
    }


    public static void main(String[] args) {
        File file = new File("D:\\io");
        long l = FileTest1.sumLength(file);
        System.out.println("该文件总长为:"+l);
    }
}

file类中的方法 java java的file对象_file类中的方法 java_02

为什么最后的文件总长计算结果为0?

因为小文件会内联存储
NTFS文件系统是如何处理小文件的

占用空间和文件大小的区别

大小对比

解释

小文件

文件大小 > 占用空间

通常占用空间为0

因为小文件内联存储

大文件

文件大小 < 占用空间

大文件占用空间包括了没有使用的簇的空间大小



  1. File file1 = new File("D:\\io\\io2\\io3\\start.txt");
    System.out.println(file1.createNewFile());//true创建成功,存在则false
    File file2 = new File("D:\\io\\io1\\io3\\dest.txt");
    System.out.println(file1.renameTo(file2));//dest不存在,则true
    // "D:\\io\\io2\\io3\\start.txt"变成了"D:\\io\\io1\\io3\\dest.txt"( 路径不同:剪切 )
    //若dest文件已存在,则返回false
    File file3 = new File("D:\\io\\io1\\io3\\file.txt");
    System.out.println(file2.renameTo(file3));( 同路径:重命名)
  2. ↩︎
  3. ↩︎