A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

创建一个工具类:FileUtils,实现以下两个方法:
方法1:传入某文件绝对路径,判断该文件是否存在,若不存在,则创建该文件,若存在将其删除,操作后给出删除成功或失败的提示。
方法2:传入某文件夹路径,将该文件删除(需要删除该文件夹下所有文件)
8.创建一个集合,内容有:[“测试题”,“点招”,“模拟练习”,“编程”];
手动在D盘根目录下新建“test”文件夹,递归遍历“D:\\ks”文件夹下所有文件,将与该集合中所包含元素名称相同的“.txt”文件复制一份到“test”文件夹中;

10 个回复

倒序浏览
这个内容主要考的是file类的,应该是day19天的内容,建议你好好回顾下
回复 使用道具 举报
回复 使用道具 举报
这应该是阶段考试的试题吧
回复 使用道具 举报
回复 使用道具 举报
先看看视频,里面会有的
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
第一题

[Java] 纯文本查看 复制代码
package myexam.test18;

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



/*
 * 创建一个工具类:FileUtils,实现以下两个方法:
 *     方法1:传入某文件绝对路径,判断该文件是否存在,若不
 *   存在,则创建该文件,若存在将其删除,操作后给出删除成
 *   功或失败的提示。
 *     方法2:传入某文件夹路径,将该文件删除(需要删除该文件夹下所有文件)
 * 
 */


public class FileUtils {

	public static void main(String[] args) {
		//这里指定文件路径,使用方法
	}
	//方法1
	public static void creatFile(File file){
		if(file.exists()){
			file.delete();
			System.out.println("文件删除成功!");
		}
		try {
			file.createNewFile();
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
			
	}
	//方法2
	public static void deleteDir(File dir){
		//1.列出当前目录下的子文件夹及文件
		
		File[] files=dir.listFiles();
		
		//2.对该数组进行遍历
		for (File file : files) {
			//3.判断书否有目录,如果有,继续使用该遍历,如果不是文件夹,直接删除
			
			if(file.isDirectory()){
				deleteDir(file);
			}else{
				System.out.println(file+":"+file.delete());
			}
		}
		//删除最外层文件夹
		System.out.println(dir+":"+dir.delete());
	}
}

回复 使用道具 举报
666,太帅了
回复 使用道具 举报
第二题:先获取D:\\ks”文件夹下所有文件的数组,使用双重for循环,外循环遍历集合,内循环遍历文件数组,获取文件名称并与集合元素进行相等判断,true的情况下先拼接路径,后使用io流进行复制(建议写一个复制文件的方法,然后此处调用)。
回复 使用道具 举报
很基础,有空我把代码发上去把
回复 使用道具 举报
第二题:
写出来了,但复制文件到指定目录时说拒绝访问,可以研究下

[AppleScript] 纯文本查看 复制代码
package myexam;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;



/*
 * 
 *   创建一个集合,内容有:[“测试题”,“点招”,“模拟练习”,“编程”];
 * 手动在D盘根目录下新建“test”文件夹,递归遍历“D:\\ks”文件夹下所有
 * 文件,将与该集合中所包含元素名称相同的“.txt”文件复制一份到“test”
 * 文件夹中;
 * 
 * 思路:
 *   1.遍历目录文件夹下的子文件及子文件夹
 *   2.获取后缀名为".txt"的文件,并存存入集合List files中
 *   3.从List files中获取与该集合中所包含元素名称相同的文件,存入新集合list2中
 *   4.复制到指定文件夹
 */
public class Test19 {

	public static void main(String[] args) throws IOException {
		List<String> list =new ArrayList<String>();
		list.add("测试题");
		list.add("点招");
		list.add("模拟练习");
		list.add("编程");
		
		File dir=new File("D:\\ks");
		File newDir=new File("D:\\test");
		@SuppressWarnings("unchecked")
		//获取指定文件的集合
		List<File> list2=fileListByContain(dir, list);
		for (File file : list2) {
			
			System.out.println(file);
		}
		copyFile2(list2, newDir);
		
		
	}
	
	//用过滤器获取文件的方法
	public static void  getFileList(File dir,List<File> list,FileFilter filter){
		//通过listFile()方法,获取dir当前路径下的所有文件和文件夹对象
		File[] files=dir.listFiles();
		//遍历该文件数组
		for (File file : files) {
			//如果有子文件夹,需要递归判断
			if(file.isDirectory()){
				getFileList(dir, list, filter);
			}else{//通过过滤器对文件进行过滤
				if(filter.accept(file)){
					list.add(file);
				}
			}
		}
	}
	
	//获取".txt"指定后缀名。
	@SuppressWarnings("rawtypes")
	public static List fileListBySuffix(File dir){
		//定义集合
		List<File> files=new ArrayList<File>();		
		FileFilter filter= new FilterBySuffix(".txt");
		getFileList(dir,files,filter);
		
		
		return files;
		
		
	}
	
	//获取指定文件名
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static List fileListByContain(File dir,List<String> list){
		List<File> files=fileListBySuffix(dir);
		List<File> list2=new ArrayList<File>();
		for (File file : files) {

			for (String string : list) {
				if(file.getName().contains(string)){
					list2.add(file);
				}
					
			}
		}
		return list2;		
	}
	
	//将文件复制到新文件夹中
	public static void copyFile(List<File> list,File newDir) throws IOException{
		if(!newDir.exists()){
			newDir.mkdir();
		}
		BufferedReader bufr=null;
		BufferedWriter bufw=null;
		String line=null;
		bufw=new BufferedWriter(new FileWriter(newDir));
		for (File file : list) {
			bufr=new BufferedReader(new FileReader(file));
			while((line=bufr.readLine())!=null){
				bufw.write(line);
			}					
		}
		System.out.println("文件复制成功");
		bufr.close();
		bufw.close();
	}
	public static void copyFile2(List<File> list,File newDir) throws IOException{
        OutputStream out = new FileOutputStream(newDir);  
        InputStream in =null;
        for (File file : list) {
			
        	in = new FileInputStream(file);  
        	byte[] buffer = new byte[1024];  
        	
        	int length;  
        	
        	while ((length = in.read(buffer)) > 0) {  
        		out.write(buffer, 0, length);  
        	}  
		}
        in.close();  
        out.close();  
	}
}


//以下为文件过滤器工具类
//创建一个包含文件名的过滤器类,可能用不上,做参考
class FilterByContain implements FileFilter{
	private String content;
	public FilterByContain(String content) {
		super();
		this.content = content;
	}
	/*public boolean accept(String name) {
		
		return name.contains(content);
	}*/
	@Override
	public boolean accept(File pathname) {
		
		return pathname.getName().contains(content);
	}
	
}

//创建一个包含后缀名的过滤器

class FilterBySuffix implements FileFilter{
	private String suffix;
	
	public FilterBySuffix(String suffix) {
		super();
		this.suffix = suffix;
	}

	/*public boolean accept(File dir, String name) {
		
		return name.endsWith(suffix);
	}*/

	@Override
	public boolean accept(File pathname) {
		
		return pathname.getName().endsWith(suffix);
	}
	
}

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马