目录操作

一、目录/文件

1.File

1)File构造:

private File(String pathname, int prefixLength)
private File(String child, File parent)
public File(String pathname)
public File(String parent, String child)
public File(File parent, String child)
public File(URI uri)

2)File类API操作

package com.gaj.day01;

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

/**
 * File
 * 文件/目录操作 File类
 * @author Jan
 *
 */
public class Demo1 {
	
	public static void main(String[] args) throws IOException {
//		File f = new File("E:\\data\\java\\a.txt");
		File f = new File("E:/data/java");
		System.out.println("文件/目录是否存在:" + f.exists());
		System.out.println("是否为目录:" + f.isDirectory());
		System.out.println("是否为文件:" + f.isFile());
		System.out.println("该目录下的子文件或目录(返回String[],不包含路径):" + f.list());
		for (String string : f.list()) {
			System.out.println(string);
		}
		System.out.println("该目录下的子文件或目录(返回File[]):" + f.listFiles());
		for (File file : f.listFiles()) {
			System.out.println(file);
		}
		System.out.println("新建目录(父目录不存在不创建):" + f.mkdir());
		System.out.println("新建目录(父目录不存在创建):" + f.mkdirs());
		System.out.println("文件是否新建:" + f.createNewFile());
		System.out.println("文件/目录路径:" + f.getPath());
		System.out.println("文件/目录名:" + f.getName());
		System.out.println("文件/目录是否可读:" + f.canRead());
		System.out.println("文件/目录是否可写:" + f.canWrite());
		System.out.println("最后一次修改时间:" + f.lastModified());
		Date date = new Date(f.lastModified());
		SimpleDateFormat simpledf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
		System.out.println(simpledf.format(date));
		System.out.println("文件/目录的大小:" + f.length()); // 返回字节数
//		System.out.println("文件/目录是否删除:" + f.delete());
	}
	
}

3)小例子

package com.gaj.day01;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * 1.输入一个目录,遍历展示所有子目录
 * 2.输入一个目录,若不存在则创建该目录
 * @author Jan
 *
 */
public class Demo2 {

	public static void main(String[] args) {
//		Scanner scanner = new Scanner(System.in);
//		System.out.println("Please enter a directory:");
//		String path = scanner.next();
//		scanner.close();
		String path = "E:/data/java";
		List<String> list = new ArrayList<>();
		File f = new File(path);
		if(f.exists()){
			list = showAllFilePath2(f, list);
			for (String string : list) {
				System.out.println(string);
			}
		}
		else{
			f.mkdirs();
			System.out.println("目录创建成功!");
		}
	}

	@SuppressWarnings("unused")
	private static void showAllFilePath(File path){
		if(path.isDirectory()){
			for (File f : path.listFiles()) {
				System.out.println(f);
				showAllFilePath(f);
			}
		}
	}
	
	private static List<String> showAllFilePath2(File path, List<String> list){
		if(path.isDirectory()){
			for(int i = 0; i < path.listFiles().length; i++){
				list.add(path.listFiles()[i].toString());
				showAllFilePath2(path.listFiles()[i], list);
			}
		}
		return list;
	}
}

2.FileFilter和FileNameFileter

1)接口描述
用于过滤需要的文件/目录
在这里插入图片描述
在这里插入图片描述
这两个接口都是函数式接口 因此可以使用Lambda表达式
2)小例子

package com.gaj.day01;

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.Iterator;

/**
 * 文件过滤器
 * String[] FileNameFileter 与list()搭配
 * File[] FileFilter 与listFiles()搭配
 * @author Jan
 *
 */
public class Demo3 {

	public static void main(String[] args) {
		String path = "E:/data/java";
		File file = new File(path);
		String[] s = file.list(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				return name.endsWith(".txt");
			}
		});
		System.out.println(Arrays.toString(s));
		s = file.list((d,n) -> n.endsWith(".java"));
		Arrays.stream(s).forEach(System.out::println);
		
		File[] f = file.listFiles(new FileFilter() {
			@Override
			public boolean accept(File pathname) {
				return pathname.toString().endsWith(".java");
			}
		});
		System.out.println(f[0]);
		f = file.listFiles(p -> p.toString().endsWith(".txt"));
		Iterator<File> i = Arrays.stream(f).iterator();
		while(i.hasNext()){
			System.out.println(i.next());
		}
		for (File fi : f) {
			if(fi.isFile())
				System.out.println("文件:" + fi.getName());
			else if(fi.isDirectory())
				System.out.println("目录:" + fi.getPath());
		}
	}
	
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值