文件操作 java.io.File

    ①创建删除文件及目录 ②查看文件及目录属性 ③文件过滤器 (PS:不包括文件读写数据)

 

1.单个文件

  创建单个文件,查看属性,删除单个文件。

 1 package tmp;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 
 6 public class File_createNewFile {
 7     public static void main(String[] args) throws IOException {
 8         
 9          //在当前目录下(当前项目的根目录)创建一个文件test.txt
10         File file = new File("."+File.separator+"test.txt");
11         
12         if(!file.exists()){
13             file.createNewFile();
14             System.out.println("文件创建完毕!");
15         }else{
16             System.out.println("该文件已存在!");
17         }
18         
19         System.out.println(file.getName());    //获取文件名    String
20         System.out.println(file.length());     //获取文件长度 long ,单位:字节
21         System.out.println(file.canRead());    //是否可读
22         System.out.println(file.canWrite());   //是否可写
23         System.out.println(file.isAbsolute()); //是否是一个绝对路径
24         System.out.println(file.isFile());     //是否是文件
25         System.out.println(file.isDirectory());//是否是目录
26         System.out.println(file.isHidden());   //是否隐藏
27         System.out.println(file.exists());     //是否存在
28         
29         File[] files = file.listFiles();       //获取指定路径下子目录和子文件
30         for (File f : files) {
31             System.out.println(f);
32         }
33         
34         File file2 = new File("."+File.separator+"test2.txt");
35         file.renameTo(file2);                  //重命名/剪切
36         
37         file.delete();                        //删除文件
38         System.out.println(file.exists());    //文件不存在了
39         
40         String path = file.getAbsolutePath();//获取绝对路径
41         System.out.println(path);
42     }
43 }

 

  2.一级目录

    一级目录的创建,删除。

 1 import java.io.File;
 2 
 3 // 使用File创建一个目录
 4 public class File_mkdir {
 5     public static void main(String[] args) {
 6         //在当前目录下创建一个目录:demo
 7 //        File dir = new File("a/b/demo.txt");  // 只有当a/b两级目录存在时可创建,否则不行。
 8         File dir = new File("demo.txt");
 9         if(!dir.exists()){
10             dir.mkdir();
11             System.out.println("目录已创建");
12         }else{
13             System.out.println("该目录已存在!");
14         }
15         dir.delete();  // 如果删除的是目录,并且目录下有子文件或者子目录则会删除失败。
16         System.out.println(dir.exists());
17     }
18 }

 

3.多级目录

  多级目录的创建,删除。

 1 import java.io.File;
 2 
 3 //创建一个多级目录
 4 public class File_mkdirs {
 5     public static void main(String[] args) {
 6         //在当前目录下创建目录:a/b/c/d/e/f
 7         File dir = new File("a"+File.separator+"b"+File.separator+
 8             "c"+File.separator+"d"+File.separator+"e"+File.separator+"f");
 9         
10         if(!dir.exists()){
11             //mkdirs在创建当前File表示的目录时会将所有不存在的父目录一同创建出来。而mkdir不具备这样的功能.
12             dir.mkdirs();
13             System.out.println("目录已创建!");
14         }else{
15             System.out.println("目录已存在!");
16         }
17         
18         delete(new File("a"));
19     }
20 
21     //删除file文件或者file目录及其所有文件
22     public static void delete(File file){
23         if(file.isDirectory()){
24             //将该目录子项全部清除            
25             File[] subs = file.listFiles();
26             for(int i=0;i<subs.length;i++){
27                 delete(subs[i]);
28             }
29         }
30         file.delete();
31     }
32 }

 

4.文件过滤器

 1 import java.io.File;
 2 
 3 //获取一个目录中的所有子项
 4 public class File_listFiles {
 5     public static void main(String[] args) {
 6 
 7         File dir = new File(".");
 8         /*
 9          * boolean isFile()
10          * 判断当前File表示的是否为文件
11          * 
12          * boolean isDirectory()
13          * 判断当前File表示的是否为目录
14          */
15         //判断是否为目录
16         if(dir.isDirectory()){
17             /*
18              * File[] listFiles()
19              * 返回的数组中每个元素为该File表示的目录中的一个子项
20              */
21             File[] subs = dir.listFiles();
22             for(int i = 0; i < subs.length; i++){
23                 System.out.println(subs[i].getName());
24             }
25         }
26         
27     }
28 }
listFiles
 1 import java.io.File;
 2 import java.io.FileFilter;
 3 
 4 //File提供了一个重载的listFiles方法,允许传入一个FileFilter(文件过滤器),
 5 //然后将当前File表示的目录中满足该过滤器要求的子项返回.
 6 public class FileFilterDemo1 {
 7     public static void main(String[] args) {
 8         //获取当前目录中所有名字以"."开头 的子项
 9         File dir = new File(".");
10         FileFilter filter = new FileFilter(){
11             //添加过滤条件,只要认为参数给定的file满足要求,则返回true即可
12             public boolean accept(File file) {
13                 String name = file.getName();
14                 System.out.println("正在过滤:"+name);
15                 return name.startsWith(".");
16             }
17             
18         };
19         File[] subs = dir.listFiles(filter);
20         for(int i = 0; i < subs.length; i++){
21             System.out.println(subs[i].getName());
22         }
23     }
24 }

 

 1 import java.io.File;
 2 import java.io.FileFilter;
 3 
 4 public class FileFilterDemo2 {
 5     public static void main(String[] args) {
 6         File file = new File("D:\\");
 7 
 8         // FileFilter---文件过滤器
 9         // 只获取D盘下的子文件
10         File[] fs = file.listFiles(new FileFilter() {
11             // 指定筛选规则
12             @Override
13             public boolean accept(File pathname) {
14                 return pathname.isFile();
15             }
16         });
17         for(File f : fs){
18             System.out.println(f);
19         }
20     }
21 }
FileFilterDemo2

 

5.文件名过滤器

 1 import java.io.File;
 2 import java.io.FilenameFilter;
 3 
 4 public class FileNameFilterDemo {
 5     public static void main(String[] args) {
 6         
 7         File file = new File("D:\\");
 8         
 9         // FilenameFilter---文件名过滤器
10         File[] fs = file.listFiles(new FilenameFilter() {
11 
12             @Override
13             public boolean accept(File dir, String name) {
14                 return name.matches(".*[nN].*");
15             }
16         });
17         for (File f : fs) {
18             System.out.println(f);
19         }
20     }
21 }

 

其它文件操作练习:

1.统计java文件的个数

 1 import java.io.File;
 2 
 3 public class FileCountJavaFile {
 4     public static void main(String[] args) {
 5         File dir = new File("E:\\xs_daidaicgb\\java projects\\03API\\day17");
 6         System.out.println(countJava(dir));
 7     }
 8     public static int countJava(File file){
 9         if(file == null){
10             return 0;
11         }
12         if(!file.isDirectory()){
13             if(file.getName().endsWith(".java"))
14                 return 1;
15             else 
16                 return 0;
17         }else{
18             int sum = 0;
19             File[] fs = file.listFiles();
20             for(File f : fs){
21                 sum += countJava(f);
22             }
23             return sum;
24         }
25     }
26 }

 

2.将所有pdf文件提取到D:PDF下

 1 import java.io.File;
 2 
 3 public class FileTypeFind {
 4     public static void main(String[] args) {
 5         File file = new File("D:\\01javaBasic");
 6         //将D:\\01javaBasic下的pdf文件提取到D:\\PDF\\下
 7         getTypeFile(file,"D:\\PDF\\","pdf");
 8         System.out.println("over");
 9     }
10     /**
11      * 将原文件中的制定类型文件,剪切到指定地址。若有重名文件自动用_数字标号。
12      * @param srcFile 需要操作的文件
13      * @param destPath 将筛选出来的文件存入destPath
14      * @param findType 制定类型的文件,例如pdf,txt,docx等
15      */
16     public static void getTypeFile(File srcFile, String destPath, String findType){
17         if(srcFile == null){
18             throw new NullPointerException("文件不能为空!");
19         }
20         if(srcFile.isDirectory()){
21             File[] fs = srcFile.listFiles();
22             for(File f : fs){
23                 if(f.isDirectory())
24                     System.out.println(f);
25                     getTypeFile(f,destPath,findType);
26             }
27         }else{
28             if(srcFile.getName().endsWith("."+findType)){
29                 File dir = new File(destPath+srcFile.getName());
30                 if(dir.exists()){
31                     int count = 0;        
32                     String fileName = srcFile.getName().substring(0,srcFile.getName().lastIndexOf("."));
33                     while(dir.exists()){
34                         count++;
35                         dir = new File(destPath+fileName+"_"+count+"."+findType);
36                     }
37                     srcFile.renameTo(new File(destPath+fileName+"_"+count+"."+findType));
38                 }else{
39                     srcFile.renameTo(new File(destPath+srcFile.getName()));
40                 }
41             }
42         }
43     }
44 }

 效果:

 

posted on 2017-12-14 23:13  kuotian  阅读(468)  评论(0编辑  收藏  举报