| 本帖最后由 朱晓杰 于 2013-5-27 21:38 编辑 
 复制代码/*
 * 检查与创建目录
 * 
 * File类并不仅仅是对现有目录路径、文件或者文件组的一个表示,也可用一个File对象新建一个目录,设置创建一个完整的目录路径。
 * 
 * 或用他了解文件的属性(长度,上一次修改的时间,读/写属性),检查一个File对象到底代表一个文件还是一个目录,以及删除一个文件等。
 * 
 * 
 * */
import static java.lang.System.out;
import java.io.File;
import java.io.IOException;
public class ClsFileDemo {
        
        //显示文件属性信息
        public static void showFileInfo(File f){
                out.println(f + "的属性信息*************************");
                out.println("Absolute path:" + f.getAbsolutePath());
                
                out.println("Can read:" + f.canRead());
                
                out.println("Can write:" + f.canWrite());
                
                out.println("Can execute:" + f.canExecute());
                
                out.println("getName:" + f.getName());
                
                out.println("getParent:" + f.getParent());
                
                out.println("getPath:" + f.getPath());
                
                out.println("length:" + f.length());
                
                out.println("lastModified:" + f.lastModified());
                
                if(f.isFile())
                        out.println("it's a file");
                else if(f.isDirectory())
                        out.println("it's a directory");
        }
        
        public static void main(String[] args) {
                File old = new File("old.txt"),rename = new File("H:" + File.separator + "rename.txt");
                
                try {
                        if(!old.exists())
                                old.createNewFile();
                } catch (IOException e) {
                        e.printStackTrace();
                }
                        
                //重命名
                boolean brename = old.renameTo(rename);
                
                out.println(old + " 重命名为:" + rename + " " + brename);
                
                showFileInfo(old);
                
                showFileInfo(rename);
                
                File f = new File("test.txt");
                
                if(f.exists()){
                        boolean del = f.delete();
                        //f.deleteOnExit();
                        out.println(f + " 删除是否成功:" + del);
                }else{
                        boolean mk = f.mkdirs();
                        out.println(f + " 创建是否成功:" + mk);
                }
                
                showFileInfo(f);
        }
}
复制代码/*
 * 需求:删除带内容的目录
 * 
 * 分析:1.了解windows系统删除原理:由内到外,一层一层删除,所以用到递归思想
 * 
 *       2.定义要删除的目录
 * 
 *       3.获取删除的目录中的文件列表
 *       
 *       4.遍历文件 列表,如果是文件,直接删除,如果是目录,则遍历目录中的文件
 *       
 *       5.将空文件夹删除
 */
import static java.lang.System.*;
import java.io.File;
public class DelDirectoryFile {
        public static void main(String[] args) {
                File file = new File("test");
                removeDir(file);
        }
        
        public static void removeDir(File dir){
                if(!dir.exists())
                        throw new RuntimeException(dir.getAbsolutePath() + "目录不存在,请检查!");
                else{
                        if(dir.isFile()){
                                //如果文件被其他应用程序打开,会报错,这时可用 deleteOnExit()
                                out.println(dir + "--file--" + dir.delete());
                        }else{
                                File[] files = dir.listFiles();
                                for(File file : files){
                                        if(file.isDirectory())
                                                removeDir(file);
                                        else if(file.isFile())
                                                out.println(file + "--file--" + file.delete());
                                }
                                out.println(dir + "**dir**" + dir.delete());
                        }
                }
        }
}
复制代码/*
 * 需求:创建java文件列表,将制定目录下的java文件的绝对路径,存储到一个文本文件中
 * 
 * 分析:1.对指定的目录递归
 * 
 *          2.获取递归过程中所有文件的绝对路径
 * 
 *          3.将这些文件路径存储到集合中
 * 
 *          4.将集合中的数据写入到一个文件中
 */
import java.util.*;
import java.io.*;
public class CreateFileList {
        
        public static void main(String[] args) {
                File dir = new File("F:\\EditPlus\\java");
                
                List<File> list = new ArrayList<File>();
                
                fileToList(dir,list);
                
                File f = new File(dir,"javalist.txt");
                
                try {
                        listToFile(list,f);
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }
        
        public static void fileToList(File dir,List<File> list){
                //检查目录是否存在
                if(!dir.exists())
                        throw new RuntimeException(dir.getAbsolutePath() + "目录不存在,请检查!");
                else{
                        //获取目录的文件列表
                        File[] files = dir.listFiles();
                        //递归遍历文件列表,如果当前是文件,则递归继续遍历,否则判读文件是否以 “.java”结尾,是则加入list中
                        for(File file : files){
                                if(file.isDirectory())
                                        fileToList(file,list);
                                else if(file.isFile()){
                                        String fileName = file.getName();
                                        if(fileName.endsWith(".java")){
                                                list.add(file);
                                        }
                                }
                        }
                }
        }
        
        public static void listToFile(List<File> list,File file) throws IOException{
                if(null != list && !list.isEmpty()){
                        //判读存储绝对路径的文件是否存在
                        if(!file.exists())
                                file.createNewFile();
                        
                        //将输出流与已知文件相关联
                        BufferedWriter fw = new BufferedWriter(new FileWriter(file));
                        
                        //高级循环List,将文件绝对路径写入文件中
                        for(File f : list){
                                String absolutePath = f.getAbsolutePath();
                                fw.write(absolutePath);
                                fw.newLine();
                                fw.flush();
                        }
                        
                        //关闭流
                        if(fw != null){
                                fw.close();
                        }
                }
        }
}
 
 |