测试 File and LinkedHashMap 示例

  1. 具体示例代码如下:
package se;

import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import org.junit.Test;

public class FileAndLinkedHashMap {

    /**
     * LinkedHashMap 指有序的 HashMap,有序指的是:存放元素的顺序
     */
    @Test
    public void testLinkedHashMap(){
        HashMap<String, Object> linkedHashMap = new LinkedHashMap<String, Object>();
        linkedHashMap.put(null, null);
        System.out.println(linkedHashMap.get("null"));
    }

    /**
     * File 表示文件 或者 目录
     * 层级分隔符不要直接使用 斜杠(/),而是使用 File.separator 常量
     * file.isFile(): 判断是否为 文件
     * file.length(): 表示文件占用的 字节量
     * file.exists(): 文件或者目录是否存在
     * file.createNewFile(): 创建一个新的、空的文件
     * file.delete(): 删除文件 或者 目录, 如果删除的是 目录,那么该目录必须为空目录,才可以删除
     * file.isDirectory(): 判断是否为目录
     * file.mkdir(): 创建当前目录
     * file.mkdirs(): 创建当前目录以及不存在的父目录
     * file.list(): 返回 目录中 所有的文件名和目录名组成的数组
     * file.listFiles(): 返回 目录中 路径名 指代的文件和目录 组成的数组
     * file.fileFilter(): 对文件的路径名 进行过滤
     */
    @Test
    public void testFile() throws Exception{
        File file = new File("G:" + File.separator + "siteAccount.txt");

        FileInputStream fis = new FileInputStream(file);

        byte[] byteArr = new byte[(int) file.length()];

        fis.read(byteArr);
        fis.close();

        System.out.println(new String(byteArr, "gbk"));
        System.out.println("is File:" + file.isFile());
        System.out.println("file length:" + file.length());
        System.out.println("file exists:" + file.exists());

        File file2 = new File("G:" + File.separator + "siteAccount2.txt");
        System.out.println("file createNewFile:" + file2.createNewFile());

        System.out.println("file delete:" + file2.delete());
        System.out.println("file isDirectory:" + file.isDirectory());

        File file3 = new File("G:" + File.separator + "siteAccount3" + File.separator + "siteAccount4");
        System.out.println("file mkdir:" + file3.mkdir());
        System.out.println("file mkdir:" + file3.mkdirs());

    }

    @Test
    public void testFileListMethodAndListfilesMethod() throws IOException{
        /*File file = new File("G:" + File.separator + "siteAccount3" + File.separator + "siteAccount4");
        System.out.println("file mkdirs: " + file.mkdirs());
        File file2 = new File("G:" + File.separator + "siteAccount3" + File.separator + "file1.txt");
        if(!file2.exists()){
            file2.createNewFile();
        }*/
        File file = new File("G:" + File.separator + "siteAccount3");

        File[] listFilterFiles = file.listFiles(new FileFilter(){
            @Override
            public boolean accept(File pathname) {
                String fileName = pathname.getName();
                if(fileName.endsWith("2.txt")){
                    return true;
                }else{
                    return false;
                }
            }});

        System.out.println("file filter: " + Arrays.toString(listFilterFiles));
        System.out.println("file list: " + Arrays.toString(file.list()));
        System.out.println("file listFiles: " + Arrays.toString(file.listFiles()));
        /*
         * file filter: [G:\siteAccount3\file2.txt]
         * file list: [file1.txt, siteAccount4]
         * file listFiles: [G:\siteAccount3\file1.txt, G:\siteAccount3\siteAccount4]
         */
    }

    /**
     * 删除目录里 所有文件和目录 以及最外层目录本身
     * 思路:
     *  1.先删除目录里 所有文件,
     *  2.再删除 空目录
     *  3.目录里包含目录,使用 递归
     */
    public void deleteDirectory(String path){
        File file = new File(path);

        if(file.isDirectory()){
            String[] list = file.list();
            if(list.length > 0){
                String innerPath = "";
                for(String fileName: list){
                    if(path.endsWith(File.separator)){
                        innerPath = path + fileName;
                    }else{
                        innerPath = path + File.separator + fileName;
                    }
                    deleteDirectory(innerPath);
                }
                // 删除空目录
                file.delete();
            }else{
                file.delete();
            }
        }else{
            file.delete();
        }
    }

    @Test
    public void testDeleteDirectory() throws IOException{
        String path = "G:" + File.separator + "test2";
        deleteDirectory(path);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值