zoukankan      html  css  js  c++  java
  • Java 文件操作-File

    1.File文件操作

      java.io.File用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件和目录。File类只用于表示文件(目录)的信息(名称、大小等),不能对文件的内容进行访问。

    1)构造方法       

    • 构造方法一:File(String pathname)
    • 通过将给定路径名字符串转换成抽象路径名来创建一个新File实例
    • 抽象路径应尽量使用相对路径,并且目录的层级分隔符不要直接写“/”或“”,因为不同的系统用的分隔符不一样,应该使用File.separator这个常量表示,以避免不同系统带来的差异。
    import java.io.File;
    public class FileDemo {
    	public static void main(String[] args) { 
    		File file = new File("D:"+File.separator+"Study"+File.separator+"Java"+File.separator+"Workspaces"+File.separator+"MyProject"+File.separator+"filedemo.txt");
    		System.out.println(file);
    	}
    }
    
    
    /*
    运行结果:
    D:StudyJavaWorkspacesMyProjectfiledemo.txt
    */
    
    • 构造方法二:File(File parent,String child)
    • 根据parent抽象路径名和child路径名字符串创建一个新File实例
    import java.io.File;
    public class FileDemo {
    	public static void main(String[] args) { 
    		File parent = new File("D:"+File.separator+"Study"+File.separator+"Java"+File.separator+"Workspaces"+File.separator+"MyProject");
    		File file = new File(parent,"filedemo.txt");
    		System.out.println(file);
    	}
    }
    
    
    /*
    运行结果:
    D:StudyJavaWorkspacesMyProjectfiledemo.txt
    */
    

    2)isFile()方法

    • 用于判断当前File对象所表示的是否为一个文件
    • 返回值为boolean类型
    • 返回值:true则表示是一个文件,false则不是文件
    import java.io.File;
    public class FileDemo {
    	public static void main(String[] args) { 
    		File file = new File("filedemo.txt");
    		boolean b = file.isFile();
    		if(b){
    			System.out.println(file+"是一个文件");
    		}
    	}
    }
    
    
    /*
    运行结果:
    filedemo.txt是一个文件
    */
    

    3)length()方法

      用于返回由此抽象路径名表示的文件的长度(占用的字节量)。

    • 返回值类型为long
    • 返回值是当前File对象所表示的文件所占用的字节量
    import java.io.File;
    public class FileDemo {
    	public static void main(String[] args) { 
    		File file = new File("filedemo.txt");
    		long len = file.length();
    		System.out.println("该文件长度为:"+len+"字节");
    	}
    }
    
    
    /*
    运行结果:
    该文件长度为:11字节
    */

    4)exists()方法

      用于测试此抽象路径名表示的文件或目录是否存在。

    • 返回值类型是boolean
    • 返回值:若该File表示的文件或目录存在则返回true,否则返回false
    import java.io.File;
    public class FileDemo {
    	public static void main(String[] args) { 
    		File file = new File("filedemo.txt");
    		boolean b = file.exists();
    		System.out.println("该文件是否存在的结果是:"+b);
    		File file2 = new File("file.txt");
    		b = file2.exists();
    		System.out.println("该文件是否存在的结果是:"+b);
    	}
    }
    
    
    /*
    运行结果:
    该文件是否存在的结果是:true
    该文件是否存在的结果是:false
    */
    

    5)creatNewFile()方法

      该方法用于当且仅当不存在具有此抽象路径名指定的名称的文件时,创建由此抽象路径名指定的一个新的空文件。

    • 返回值是boolean类型
    • 如果知道文件不存在并成功创建则返回true,如果知道文件已经存在则返回false
    import java.io.File;
    import java.io.IOException;
    public class FileDemo {
    	public static void main(String[] args) throws IOException { 
    		File file = new File("filedemo.txt");
    		boolean b = file.createNewFile();
    		System.out.println(b);
    		File file2 = new File("file.txt");
    		b = file2.createNewFile();   //成功创建不存在的该文件,如下图
    		System.out.println(b);
    	}
    }
    
    
    /*
    运行结果:
    false
    true
    */
    

     

    6)delete()方法

      该方法用于删除此抽象路径名表示的文件或目录。

    • 返回值类型为boolean
    • 当且仅当成功删除文件或目录时,返回true;否则返回false
    • 注意:若此file对象所表示的是一个目录时,在删除时需要保证此目录为空才可以成功删除(目录中不能含有任何子项)
    import java.io.File;
    public class FileDemo {
    	public static void main(String[] args) { 
    		File file = new File("file.txt");
    		boolean b = file.delete();
    		System.out.println(b);
    		File dir = new File("test");   //test文件夹下面建立了子文件夹和子文件
    		b = dir.delete();
    		System.out.println(b);
    	}
    }
    
    /*
    运行结果:
    true     成功删除
    false    含有子文件不能删除,返回false
    */
    

     

    7)isDirectory()方法

      该方法用于判断当前File表示的是否为一个目录。

    • 返回值类型为boolean类型
    • 返回值:当File对象表示一个目录时返回true,否则返回false
    import java.io.File;
    
    public class FileDemo {
    	public static void main(String[] args) { 
    		File dir = new File("test");
    		boolean b = dir.isDirectory();
    		System.out.println(b);
    		File file = new File("filedemo.txt");
    		b = file.isDirectory();
    		System.out.println(b);
    	}
    }
    
    
    /*
    运行结果:
    true
    false
    */
    

     

    8)mkdir()方法

      该方法用于创建此抽象路径名指定的目录。

    • 返回值类型为boolean类型
    • 当且仅当已创建目录时返回true,否则返回false
    • 当创建的文件夹不存在父目录时无法创建(不能创建多级目录)
    import java.io.File;
    
    public class FileDemo {
    	public static void main(String[] args) { 
    		File dir = new File("dirdemo");
    		boolean b = dir.mkdir();
    		System.out.println(b);
    		//dirdemo1这个文件夹是不存在的,看是否能够建立成功
    		File dir2 = new File("dirdemo1"+File.separator+"dirdemo2"+File.separator+"dirdemo3");
    		b = dir2.mkdir();
    		System.out.println(b);
    	}
    }
    
    
    /*
    运行结果:
    true
    false  说明mkdir()无法创建没有父目录的目录
    */
    

      

    9)mkdirs()方法

      该方法用于创建此抽象路径名指定的目录,包括所有必须但不存在的父目录。注意:此操作失败时也可能已经成功地创建了一部分必须的父目录。

    • 返回值为boolean类型
    • 当且仅当创建目录以及所有必须的父目录时返回true,否则返回false
    import java.io.File;
    
    public class FileDemo {
    	public static void main(String[] args) { 
    		//dirdemo1这个文件夹是不存在的,看是否能够建立成功
    		File dir = new File("dirdemo1"+File.separator+"dirdemo2"+File.separator+"dirdemo3");
    		boolean b = dir.mkdirs();
    		System.out.println(b);
    	}
    }
    
    
    
    //运行结果:true   检查文件夹发现创建成功
    

      

    10)listFiles()方法

      该方法用于返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的子项(文件或目录)。

    • File[] listFiles()
    • 返回值:抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录,如果目录为空,数组也是空,如果抽象路径名不表示一个目录或者发生I/O错误,则返回null
    import java.io.File;
    import java.util.Arrays;
    
    public class FileDemo {
    	public static void main(String[] args) { 
    		File file = new File("dirdemo");
    		File[] list = file.listFiles();
    		System.out.println(Arrays.toString(list));
    		//变量该数组内容
    		for(File x:list){
    			System.out.println(x);
    		}
    		File file2 = new File("filedemo.txt");
    		File[] list2 = file2.listFiles();
    		System.out.println(Arrays.toString(list2));
    	}
    }
    
    
    /*
    运行结果:
    [dirdemoone, dirdemoone.txt]
    dirdemoone
    dirdemoone.txt
    null        filedemo.txt是文件不是目录,所以返回null
    */
    

     

    11)FileFilter接口

    • 用于抽象路径名的过滤器
    • 此接口的实例可传递给File类的listFiles(FileFilter)方法,用于返回满足该过滤器要求的子项

      通过listFiles方法可以获取一个目录下所有的子项,有时候只希望获取部分特定的子项,这时可以使用File的重载方法:

      File[] listFiles(FileFilter  filter)

      该重载方法要求传入一个参数,类型是FileFilter,FileFilter是用于抽象路径名的过滤器,相当于定义一个规则来过滤文件。FileFilter是一个接口,所以定义规则时,可以定义一个类来实现这个接口,而此接口的实例可传递给File类的listFiles(FileFilter)方法,如案例1。

    案例1:过滤所有以.txt结尾的文件

     1 import java.io.File;
     2 import java.io.FileFilter;
     3 import java.util.Arrays;
     4 
     5 public class FileDemo {
     6     public static void main(String[] args) { 
     7         File dir = new File("."); //.表示当前目录
     8         File[] subs = dir.listFiles(new FileFilter(){
     9             public boolean accept(File file){
    10                 return file.getName().endsWith(".txt");
    11             }
    12         });
    13         System.out.println(Arrays.toString(subs));
    14         //遍历
    15         for(File sub:subs){
    16             System.out.println(sub);
    17         }
    18     }
    19 }
    View Code

     

      该方法的参数FileFilter实例的accept方法进行过滤,listFiles方法会将所有accept方法返回true的子项保留并返回。

    案例2:查看文件的相关信息

    要求:查看文件名、大小、可读、可写、是否隐藏、最后修改时间

    import java.io.File;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class FileInfoDemo {
    	public static void main(String[] args) {
    		File file = new File("filedemo.txt");
    		//获取文件名
    		String name = file.getName();
    		System.out.println("文件名:"+name);
    		//获取文件大小,有多少字节
    		long len = file.length();
    		System.out.println("文件有"+len+"个字节");
    		//查看是否可读
    		boolean canRead = file.canRead();
    		System.out.println("可读:"+canRead);
    		//查看文件是否可写
    		boolean canWrite = file.canWrite();
    		System.out.println("可写:"+canWrite);
    		//查看文件是否隐藏
    		boolean isHidden = file.isFile();
    		System.out.println("是否隐藏:"+isHidden);
    		//查看最后修改文件时间
    		long time = file.lastModified();
    		System.out.println("最后修改时间:"+time);
    		//转换时间格式输出
    		SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
    		Date date = new Date(time);
    		System.out.println("最后修改时间:"+sdf.format(date));
    	}
    }
    
    
    /*
    运行结果:
    文件名:filedemo.txt
    文件有11个字节
    可读:true
    可写:true
    是否隐藏:true
    最后修改时间:1496414987501
    最后修改时间:17-06-02 22:49:47
    */
    

      

    案例3:删除目录

    要求:判断目录是否存在,存在则删除

    import java.io.File;
    
    public class FileDeleteDemo {
    	public static void main(String[] args) {
    		File file = new File("dira");
    		if(file.exists()){
    			file.delete();  //使用delete删除目录时,要求该目录必须是空目录才能删除
    			System.out.println("删除文件完毕");
    		}else{
    			System.out.println("文件不存在");
    		}
    	}
    }
    

    案例4:删除非空目录

    import java.io.File;
    
    public class FileDeleteDemo {
    	public static void main(String[] args) {
    		File file = new File("dirdemo");
    		if(file.exists()){
    			file.delete();
    			System.out.println("删除文件完毕");
    		}else{
    			System.out.println("文件不存在");
    		}
    		boolean b = file.exists();  //存在是true,不存在是false
    		System.out.println("文件是否真的删除:"+!b);  //文件还存在,并没有真被删除
    	}
    }
    
    /*
    运行结果:
    删除文件完毕
    文件是否真的删除:false
    */
    

    案例5:判断文件是否存在不存在就创建

    import java.io.File;
    import java.io.IOException;
    
    public class File_createNewFile {
    	public static void main(String[] args) throws IOException {
    		File file = new File("a.txt");
    		if(!file.exists()){
    			file.createNewFile();
    			System.out.println("文件创建完毕");
    		}else{
    			System.out.println("文件已存在");
    		}
    	}
    }
    

      

    案例6:删除文件或非空目录方法

    import java.io.File;
    /**
     * 思路:
     * 1.先获取该目录的子项
     * 2.判断子项是文件还是目录
     * 3.是文件就删除,是目录就继续获取子项
     * 4.直到最后一个空目录为止
     */
    public interface FileDeleteDemo02 {
    	public static void main(String[] args) {
    		File file = new File("dirdemo");
    		fileDelete(file);
    	}
    	public static void fileDelete(File file){  //删除文件方法
    		if(file.isDirectory()){   //如果是目录就获取子项
    			File[] subs = file.listFiles();
    			for(File sub:subs){
    				fileDelete(sub);
    			}
    		}
    		file.delete();   //如果是文件(不是目录)就删除
    	}
    }
    
    
    //这里用到了递归方法
    

    案例7:获取当前目录的子项分别输出目录和文件

    import java.io.File;
    
    public class File_listFiles {
    	public static void main(String[] args) {
    		File file = new File(".");  //.代表当前路径
    		File[] subs = file.listFiles();
    		for(File sub:subs){
    			if(sub.isFile()){
    				System.out.print("文件:");
    			}
    			if(sub.isDirectory()){
    				System.out.print("目录:");
    			}
    			System.out.println(sub.getName());
    		}
    	}
    }
    
    /*
    运行结果:
    文件:.classpath
    文件:.project
    目录:.settings
    目录:bin
    文件:demo.txt
    目录:dirdemo1
    文件:filedemo.txt
    文件:fos.txt
    文件:raf.txt
    目录:src
    目录:test
    */
    

      

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    tar打包如何不打包某一个文件夹(排除某些文件夹)
    第一个SpringBoot应用
    Linux(以RHEL7为例)下添加工作区的方法|| The Way To Add Workspace On Linux
    Linux(以centos7为例)下自动挂载NTFS硬盘
    基于Moodle的IT课程辅助教育平台搭建
    搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台
    如何利用word2013写图文并茂的博客
    如何安装win10+Red Hat Enterprise Linux双系统?
    课堂练习:ex 4-20
    实验二 函数重载、函数模板、简单类的定义和实现
  • 原文地址:https://www.cnblogs.com/jmwm/p/6926442.html
Copyright © 2011-2022 走看看