Java练手--列出某文件夹及其子文件夹下面的文件,并可根据扩展名过滤

package com;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DateFormat;
import java.util.Date;

public class FileUtil {
	//列出某文件夹及其子文件夹下面的文件,并可根据扩展名过滤
	public static void list(File path){
		if(!path.exists()){
			System.out.println("文件不存在");
		}else{
			if(path.isFile()){
				if(path.getName().toLowerCase().endsWith(".pdf")
						||path.getName().toLowerCase().endsWith(".doc")
						||path.getName().toLowerCase().endsWith(".chm")
						||path.getName().toLowerCase().endsWith(".html")
						||path.getName().toLowerCase().endsWith(".htm")){
					System.out.println(path);
					System.out.println(path.getName());
				}
			}else{
				File[] files=path.listFiles();
				for(int i=0;i<files.length;i++){
					list(files[i]);
				}
			}
		}
	}
	
	//拷贝一个目录或者文件到指定路径下,即把源文件拷贝到目标文件路径下(没运行)
	//source 源文件
	//target 目标文件路径
	public static void copy(File source,File target){
		File tarpath=new File(target,source.getName());

	//	IsDirectory判断是否为目录,IsDots判断是否为点
	//	--这个要说明一下,你用过Dos的话,就应该知道,每个目录下都有缺省的两个目录,名称分别为'.'和'..',
	//	分别代表上一层目录和本层目录。因此,当我们在遍历目录下文件时,需要过滤掉这两个缺省目录。
		if(source.isDirectory()){
		//在Java中对文件进行操作时常常用到java.io.File.mkdir()和java.io.File.mkdirs()
		//两个方法来创建一个目录(文件夹),这两个方法非常相似,都是无参数且返回值都为boolean类型的方法,
		//都是用于创建指定路径名称对应的目录,但二者主要区别如下:
		//java.io.File.mkdir():只能创建一级目录,且父目录必须存在,否则无法成功创建一个目录。
		//java.io.File.mkdirs():可以创建多级目录,父目录不一定存在。
			tarpath.mkdir();
			File[] dir=source.listFiles();
			for(int i=0;i<dir.length;i++){
				copy(dir[i],tarpath);
			}
		}else{
				try {
					InputStream is=new FileInputStream(source);//用于读取文件的原始字节流
					OutputStream os=new FileOutputStream(tarpath);//用于写入文件的原始字节的流
					byte[] buf=new byte[1024];//存储读取数据的缓冲区大小
					int len=0;
					while((len=is.read(buf))!=-1){
						os.write(buf, 0, len);
					}
					is.close();
					os.close();
				} catch (FileNotFoundException e) {
					e.printStackTrace();
				}catch (IOException e) {
					e.printStackTrace();
				}
		}
	}
	public static void main(String[] args){
		File file=new File("E:\\BaiduNetdiskDownload");
		list(file);
		Date myDate=new Date();
		DateFormat df=DateFormat.getDateInstance();
		System.out.println(df.format(myDate));
	}
	
	
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值