zoukankan      html  css  js  c++  java
  • Java File类常用方法及实例

    创建:
    createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false。

    createTempFile(String prefix, String suffix, File directory)   在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
    mkdir()  在指定位置创建一个单级文件夹。
    mkdirs()  在指定位置创建一个多级文件夹。
    renameTo(File dest)如果目标文件与源文件是在同一个路径下,那么renameTo的作用是重命名, 如果目标文件与源文件不是同一个路径下,那么renameTo的作用就是剪切,而且还不能操作文件夹。

    删除:
    delete()  删除文件或者一个空文件夹,不能删除非空文件夹,马上删除文件,返回一个布尔值。
    deleteOnExit()jvm退出时删除文件或者文件夹,用于删除临时文件,无返回值。

     判断:
    exists()  文件或文件夹是否存在。
    isFile()  是否是一个文件,如果不存在,则始终为false。
    isDirectory()  是否是一个目录,如果不存在,则始终为false。
    isHidden()  是否是一个隐藏的文件或是否是隐藏的目录。
    isAbsolute()  测试此抽象路径名是否为绝对路径名。
    boolean canExecute()判断文件是否可执行
    boolean canRead()判断文件是否可读
    boolean canWrite() 判断文件是否可写

     获取:
    getName()  获取文件或文件夹的名称,不包含上级路径。
    getAbsolutePath()获取文件的绝对路径,与文件是否存在没关系
    length()  获取文件的大小(字节数),如果文件不存在则返回0,如果是文件夹也返回0。
    getParent()  返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。
    lastModified()获取最后一次被修改的时间。

    文件夹相关:
    static File[] listRoots()列出所有的根目录(Window中就是所有系统的盘符)
    list()  返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。
    listFiles()  返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。
    list(FilenameFilter filter)返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
    listFiles(FilenameFilter filter)返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。



    ********************实例********************


    import java.io.File;

    1.在指定位置创建文件creatNewFile()
    File myFile = new File("D:\test.txt");
    if(!myFile.exists){
        myFile.mkdir();//创建文件夹
        
        myFile.creatNewFile();创建文件
    }

    createTempFile(String prefix, String suffix, File directory)

            File file=null;
            File dir=new File("E:");
            file=file.createTempFile("javatemp", ".txt",dir);
            System.out.println(file.getPath());


    2.在指定位置创建文件夹mkdir()
    File myFile = new File("D:\yxy");
    if(!myFile.exists){
        myFile.mkdir();//创建文件夹
    }

    3.在指定位置创建一个多级文件夹mkdirs()
    File myFile = new File("D:/yxy");
    if(!myFile.exists){
        //如果父目录存在,则直接在父目录中创建子目录;如果父目录不存在,递归创建所有目录
        myFile.mkdirs();
    }



    4.使用递归遍历目录:
    public class Test2 {

        public static void main(String[] args) {
               Myfile yxy=new Myfile();
               yxy.yxyfile();
        }
    }
    class Myfile{
        File myFile = new File("D:/yxy");
        File[] files=myFile.listFiles();
        void yxyfile(){
            for(File fd:files){
                if(fd.isDirectory()){
                    System.out.println(fd);
                    files =fd.listFiles();//生成新的listFiles()
                    yxyfile();//使用递归
                }else{
                    System.out.println(fd);
                }
            }
        }


    5.清空目录下的所有文件夹和文件
    ①方法一:
    public class Test2 {

        public static void main(String[] args) {
               Myfile yxy=new Myfile();
               yxy.yxyfile();
        }
    }
    class Myfile{
        File myFile = new File("D:/yxy");
        File[] files=myFile.listFiles();
        void yxyfile(){
            //第一个for循环用于删除文件
            ArrayList<File> dirname=new ArrayList<File>();//用于保存目录
            for(File fd:files){
                if(fd.isDirectory()){
                    System.out.println(fd);
                    files =fd.listFiles();//生成新的listFiles()
                    dirname.add(fd);
                    yxyfile();//使用递归
                }else{
                    System.out.println(fd);
                    fd.delete();//删除所有的文件
                }
                //删除空目录
                for(File dir:dirname){
                    dir.delete();
                }}}}

    ②方法二:
    public class Test2 {

        public static void main(String[] args) {
               Myfile yxy=new Myfile();
               yxy.yxyfile();
        }
    }
    class Myfile{
        File myFile = new File("D:/yxy");
        File[] files=myFile.listFiles();
        void yxyfile(){
            //第一个for循环用于删除文件
            for(File fd:files){
                if(fd.isDirectory()){
                    System.out.println(fd);
                    files =fd.listFiles();//生成新的listFiles()
                    yxyfile();//使用递归
                }else{
                    System.out.println(fd);
                    fd.delete();//删除所有的文件
                }
                //删除空目录
                File[] dir=myFile.listFiles();//剩下的空文件夹
                for(int i=0;i<dir.length;i++){
                    dir[i].delete();
                }}}}

    ③方法三(调用cmd,简单):
    public class Test1 {

        public static void main(String[] args) {
            try {  
                String cmd = "cmd.exe /c rd /s/q E:\yxy";  
                Runtime.getRuntime().exec(cmd);
                System.out.println("yes");
                } catch (Exception e) {  
                    System.out.println("Error");
                } }}

    :/s代表删除所有子目录及子目录下文件,/q代表删除时不需再次确认,

    6.list()和listFiles()的区别
            File file=new File("E:\xxx");
            String[] filename1=file.list();//返回文件或目录的名字
            File[] filename2=file.listFiles();//返回文件或目录的完整路径
            File[] filename3=file.listRoots();//列出所有根目录(Window中就是所有系统的盘符)
            for(String name1:filename1){System.out.println(name1);}
            for(File name2:filename2){System.out.println(name2);}
            for(File name3:filename3){System.out.println(name3);}

    输出:
    list():
    python内置进制转换方法.png
    python的面向对象.png
    新建文件夹

    listFiles():
    E:xxxpython内置进制转换方法.png
    E:xxxpython的面向对象.png
    E:xxx新建文件夹

    listRoots():
    C:
    D:
    E:
    Z:

    7.renameTo(File dest)
    注释:如果目标文件与源文件是在同一个路径下,那么renameTo的作用是重命名, 如果目标文件与源文件不是在同一个路径下

    ,那么renameTo的作用就是剪切,而且还不能操作文件夹。

    ①重命名:
    File file=new File("E:\xxx\python的面向对象.png");
    file.renameTo(new File("E:\xxx\py的面向对象.png"));

    ②移动文件:
    File file=new File("E:\xxx\python的面向对象.png");
    file.renameTo(new File("D:\python的面向对象.png"));

    8.调用CMD命令移动整个文件夹
            try{
                Runtime.getRuntime().exec("cmd.exe /c move E:\xxx\1 E:");
            }catch(Exception e){
                System.out.println("Error");
            }

    注意:

    String curDir = System.getProperty("user.dir");

    System.out.println("你当前的工作目录为 :" + curDir);

    System.getProperty这是获取JVM的系统属性,user.dir(user working directory)

  • 相关阅读:
    Intellij IDEA 配置Tomcat远程调试
    maven学习二(dependencies)
    maven学习一(HelloWorld工程)
    一致性hash在分布式系统中的应用
    理解TCP之Keepalive
    理解HTTP之keep-alive
    TCP/IP,http,socket,长连接,短连接
    图解 HTTP 协议
    PHP开发的一些趣事
    vue
  • 原文地址:https://www.cnblogs.com/Downtime/p/7783340.html
Copyright © 2011-2022 走看看