zoukankan      html  css  js  c++  java
  • 【java学习笔记】文件操作

    文件操作 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 }

     效果:

  • 相关阅读:
    自定义类型百度地图之自定义地图类型详解
    电话文本android(3)_拨打电话操作
    检查运行IIS 5.1 使用出现server application error解决方法
    function运行令人吐血的IE JS兼容性问题。。。
    组件设置window2008 64位系统无法调用Microsoft.Office.Interop组件进行文件另存的解决办法
    api时间转换VarDateFromStr,VariantTimeToSystemTime
    C与CPP文件的区别
    OpenSSL 使用指南
    Pascal保留字/关键字列表
    windbg 启动参数,常用命令
  • 原文地址:https://www.cnblogs.com/kuotian/p/8040514.html
Copyright © 2011-2022 走看看