本帖最后由 朱晓杰 于 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();
- }
- }
- }
- }
-
复制代码 |