- 具体示例代码如下:
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[] 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()));
}
/**
* 删除目录里 所有文件和目录 以及最外层目录本身
* 思路:
* 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);
}
}