将通过以下四小题来展开文件操作的入门。

实验内容:

1、编写File类,创建文件、删除文件、判断文件是否存在、打印文件全路径。

package com.wxy.shiyanliu;

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

public class Test1 {
    public static void main(String[] args) throws IOException {
        File file1 = new File("D:\\test\\test.txt");
        boolean isExists = false;
        //创建文件夹
        // file1.mkdir();
        //创建文件
        file1.createNewFile();

        isExists = file1.exists();
        System.out.println(isExists?"该文件存在":"该文件不存在");

        System.out.println("该文件的完整路径如下");
        System.out.println(file1.getPath());

        //删除文件,deleteOnexists将在程序执行结束后和JVM终止时才删除文件,只做声明
        //而delete()则是直接删除
        file1.delete();

        System.out.println("经过删除操作之后");
        isExists = file1.exists();
        System.out.println(isExists?"该文件存在":"该文件不存在");


    }
}

运行效果如下: 

java如何测试unint java如何测试文件的写错误_jvm

2. 编写File类,创建目录、删除目录、判断是否是目录、打印目录的全路径。

package com.wxy.shiyanliu;

import java.io.File;

public class Test2 {
    public static void main(String[] args) {
        File file2 = new File("D:\\test2");
        boolean isExists = false;
        //创建目录
        isExists = file2.mkdir();
        //System.out.println(isExists);

        //判断是否为目录
        isExists = file2.isDirectory();
        System.out.println(isExists?"是目录":"不是目录");

        //打印目录全路径
        System.out.println("该文件夹的全路径是" + file2.getPath());

        //删除目录
        isExists = file2.delete();
        System.out.println(isExists?"删除成功!":"删除失败");



    }
}

运行效果如下:

java如何测试unint java如何测试文件的写错误_开发语言_02

3.编写程序遍历目录。

package com.wxy.shiyanliu;

import java.io.File;

public class Test3 {
    public static void traverse(File files){
        for(String fileName: files.list()){
            File file = new File(files.getPath() + "\\" + fileName);
            if (file.isDirectory()){
                System.out.println("是一个文件夹:" + file.getName());
                traverse(file);

            }
            else if (file.isFile()){
                System.out.println("是一个文件:" + file.getName());
            }
        }

    }
    public static void main(String[] args) {
        File file = new File("D:\\test1");
        traverse(file);
    }
}

运行效果如下:

java如何测试unint java如何测试文件的写错误_java如何测试unint_03

4. 编写程序删除多级目录。

package com.wxy.shiyanliu;

import java.io.File;

public class Test4 {
    public static void traverse(File files){
        String str = "";
        for(String file: files.list()){str += (file+" ");}
        System.out.println("本次需要操作的文件有" + str + "\n" + "-------------------------------------");
        for(String fileName: files.list()){
            File file = new File(files.getPath() + "\\" + fileName);
            if (file.isDirectory()){
                System.out.println("是一个文件夹:" + file.getName());
                traverse(file);
                file.delete();
                System.out.println("已经删除该文件夹" + file.getName());
            }
            else if (file.isFile()){
                System.out.println("是一个文件:" + file.getName());
                file.delete();
                System.out.println("已经删除该文件" + file.getName());
            }
        }

    }
    public static void main(String[] args) {
        File file = new File("D:\\test1");
        traverse(file);
    }
}

运行效果如下:

java如何测试unint java如何测试文件的写错误_jvm_04

实验分析:

1,2题是对文件以及文件夹的的一些基本操作,需要先用file对象绑定一个目录,而此时并不会将该文件创建,而是在使用方法如mkdir()时,才可以把该文件创建出来。在遍历文件中,采用的是一个递归的思想,核心则是文件夹操作的list()方法,可以将该文件夹中的文件名称列出来(都不能列出子文件夹的子文件夹),所以我们需要通过拼接路径加文件名的方式,还需要判断每个文件是文件夹还是文件,如果是文件夹的是则需要递归调用该方法,继续执行以上操作,如此下来就可以完成对该文件夹下所有的文件进行遍历,如果要删除文件,则只需要在遍历的时候增加删除操作即可。

实验总结:

有一点需要注意的是发现删除文件后,使用exists()方法发现该文件仍旧存在

java如何测试unint java如何测试文件的写错误_jvm_05

解决方法:删除文件时使用了deleteOnexists(),而该方法将在程序执行结束后和JVM终止时才删除文件,只做声明。而delete()则是直接删除,所以此处改用delete()方法。

如图,可以达到效果。