黑马程序员技术交流社区

标题: java考试有两道题不会,求大神解答!!! [打印本页]

作者: 刘媛媛    时间: 2017-2-28 23:37
标题: java考试有两道题不会,求大神解答!!!
创建一个工具类:FileUtils,实现以下两个方法:
方法1:传入某文件绝对路径,判断该文件是否存在,若不存在,则创建该文件,若存在将其删除,操作后给出删除成功或失败的提示。
方法2:传入某文件夹路径,将该文件删除(需要删除该文件夹下所有文件)
8.创建一个集合,内容有:[“测试题”,“点招”,“模拟练习”,“编程”];
手动在D盘根目录下新建“test”文件夹,递归遍历“D:\\ks”文件夹下所有文件,将与该集合中所包含元素名称相同的“.txt”文件复制一份到“test”文件夹中;
作者: 黄公子    时间: 2017-2-28 23:42
这个内容主要考的是file类的,应该是day19天的内容,建议你好好回顾下
作者: 阿丿崔    时间: 2017-3-1 00:31
哪个城市的啊?

作者: 笑对明天    时间: 2017-3-1 00:52
这应该是阶段考试的试题吧
作者: 莫名忧伤    时间: 2017-3-1 00:55
这个好难。。

作者: 北海北    时间: 2017-3-1 07:30
先看看视频,里面会有的

作者: lvshen9    时间: 2017-3-1 12:28
第一题

[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());
        }
}


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

[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);
        }
       
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2