zoukankan      html  css  js  c++  java
  • Java的IO操作---File类

    目标

      1)掌握File类作用

      2)可以使用file类中方法对文件进行读写操作。

    File类

      唯一与文件有关的类。使用file类可进行创建或删除操作,要想使用File类,首先观察File类的构造方法。

      public File(String pathname);实例化File类的时候,必须设置好路径。

      常量::

    public staitc final String pathSeparator;

      明明使用了static final定义的常量,这里为什么使用了小写方式。实际上这属于JAVA的历史遗留问题。

    实例操作一:创建一个新文件。

      创建文件:

    public boolean  creatNewFile() throws IOExcetion

      用以上方法就可以创建文件,但是注意要有异常处理

      在D盘创建一个文件:

    import java.io.File ;
    import java.io.IOException ;
    public class FileDemo01{
        public static void main(String args[]){
            File f = new File("d:\test.txt") ;        // 实例化File类的对象,给出路径
            try{
                f.createNewFile() ;        // 创建文件,根据给定的路径创建
            }catch(IOException e){
                e.printStackTrace() ;    // 输出异常信息
            }
        }
    };

      运行结果:

     

       步骤:首先创建File对象,创建对象的时候要给出文件路径,然后用这个对象调用creatNewFile()方法,注意调用方法时候要有异常处理

      以上完成了文件创建功能,但是开发中以上程序编写肯定会出现错误,在各个操作系统中,路径分隔符是不一样的。例如:

      windows使用反斜杠:""

      Linux中使用正斜杠:"/"

      要想让JAVA可移植增强,最好让操作系统自动使用分隔符

    package Thread1;
    
    import java.io.File;
    import java.io.IOException;
    
    public class demo1{
        public static void main(String args[])
        {
            System.out.println("pathSeparator:" + File.pathSeparator) ;    // 调用静态常量
            System.out.println("separator:" + File.separator) ;    // 调用静态常量
        }
    }

      运行结果:

    pathSeparator:;
    separator:

      要想保持可移植性,在编写的时候应该使用File类中的常量。修改之前程序。

    package Thread1;
    
    import java.io.File;
    import java.io.IOException;
    
    public class demo1{
        public static void main(String args[])
        {
            File f = new File("d:"+File.separator+"test.txt") ;        // 实例化File类的对象
            try{
                f.createNewFile() ;        // 创建文件,根据给定的路径创建
            }catch(IOException e){
                e.printStackTrace() ;    // 输出异常信息
            }
        }
    }

      注意:在操作文件的时候一定要注意分隔符,使用File.separator表示。

    删除一个指定的文件

      删除文件方法:

    public boolean delete();

      将之前建立好的文件删除掉。

    package Thread1;
    import java.io.File;
    import java.io.IOException;
    
    public class demo1{
        public static void main(String args[])
        {
            File f = new File("d:"+File.separator+"test.txt") ;        // 实例化File类的对象
            f.delete() ;    // 删除文件
        }
    }

      运行结果:

      确实删除了文件。

      此时文件确实删除了,但是删除之前最好进行判断文件是不是存在

      在File类中可以使用exists()方法判断一个文件是否存在

    public boolean exists();

      使用以上代码增强之前程序。

    package Thread1;
    import java.io.File;
    import java.io.IOException;
    
    public class demo1{
        public static void main(String args[])
        {
            File f = new File("d:"+File.separator+"test.txt") ;        // 实例化File类的对象
            if(f.exists()){    // 如果文件存在则删除
                f.delete() ;    // 删除文件
            }
            else
                System.out.println("文件不存在");
        }
    }

      运行结果:

    文件不存在

      由于之前已经删除了,所以这里文件不存在。

    综合创建,删除文件的操作

      要求:给定一个路径,如果文件存在删除,不存在,创建之。

    import java.io.File ;
    import java.io.IOException ;
    public class FileDemo06{
        public static void main(String args[]){
            File f = new File("d:"+File.separator+"test.txt") ;        // 实例化File类的对象
            if(f.exists()){    // 如果文件存在则删除
                f.delete() ;    // 删除文件
            }else{
                try{
                    f.createNewFile() ;        // 创建文件,根据给定的路径创建
                }catch(IOException e){
                    e.printStackTrace() ;    // 输出异常信息
                }
            }
        }
    };

      提示:对于文件的后缀可有可无。

    创建文件夹

      使用mkdir()方法创建文件夹、

    public boolean mkdir();

      实例;

    import java.io.File ;
    import java.io.IOException ;
    public class FileDemo07{
        public static void main(String args[]){
            File f = new File("d:"+File.separator+"mldn") ;        // 实例化File类的对象
            f.mkdir() ;    // 创建文件夹
        }
    };

      运行结果:创建成功一个名为mldn的文件夹。

    列出指定目录的全部文件。

      如果给出一个目录,可以列出目录中全部内容,但是列出的方法存在两个:

      1,以字符串数组的形式返回。

    public String [] list();

      2,以File数组形式返回:

    pulbic File [] listFiles();

      操作一:list()方法:

    package Thread1;
    import java.io.File;
    import java.io.IOException;
    
    public class demo1{
        public static void main(String args[])
        {
            File f = new File("d:"+File.separator) ;        // 实例化File类的对象
            String str[] = f.list() ;    // 列出给定目录中的内容
            for(int i=0;i<str.length;i++){
                System.out.println(str[i]) ;
            }
        }
    }

      运行结果:

    $RECYCLE.BIN
    360SoftMove
    BDSoftMgrData
    Config.Msi
    FDownload
    MSOCache
    Program Files
    System Volume Information
    TrainingPackage_dna
    TrainingPackage_zcgl
    办公软件
    我的文档
    搜狗高速下载
    搞笑
    文件清理.bat
    编程软件
    

      以上只是列出全部文件名字

      操作2,使用listFiles()方法列出。

    package Thread1;
    import java.io.File;
    import java.io.IOException;
    
    public class demo1{
        public static void main(String args[])
        {
            File f = new File("d:"+File.separator) ;        // 实例化File类的对象
            File files[] = f.listFiles() ;    // 列出全部内容,注意需要一个files对象数组接受这个返回数组。
            for(int i=0;i<files.length;i++){
                System.out.println(files[i]) ;
            }
        }
    }

      运行结果:

    d:$RECYCLE.BIN
    d:360SoftMove
    d:BDSoftMgrData
    d:Config.Msi
    d:FDownload
    d:GSP平台
    d:GS管理套件
    d:MSOCache
    d:Program Files
    d:System Volume Information
    d:TrainingPackage_dna
    d:TrainingPackage_zcgl
    d:久其培训
    d:办公软件
    d:我的文档
    d:搜狗高速下载
    d:搞笑
    d:文件清理.bat
    d:编程软件
    d:蓝桥杯试题

      此时列出的是完整的路径。这样对于程序本身是很容易操作的。

    判断一个给定的路径是否目录。

      在File类中直接使用方法:public boolean isDirectory(); 

    package Thread1;
    import java.io.File;
    import java.io.IOException;
    
    public class demo1{
        public static void main(String args[])
        {
            File f = new File("d:"+File.separator) ;        // 实例化File类的对象
            if(f.isDirectory()){    // 判断是否是目录
                System.out.println(f.getPath() + "路径是目录。") ;
            }else{
                System.out.println(f.getPath() + "路径不是目录。") ;
            }
        }
    }

      运行结果:

    d:路径是目录。

    列出指定目录的全部内容

      如果给定一个目录,则讲目录的全部文件列出来,但是列的时候可能存在子文件夹,子文件夹也有子文件夹。

      应该采用递归的形式。

    package Thread1;
    import java.io.File;
    import java.io.IOException;
    
    public class demo1{
        public static void main(String args[]){
            File my = new File("d:" + File.separator+"FDownload") ;    // 操作路径
            print(my) ;
        }
        public static void print(File file){    // 递归调用
            if(file!=null){    // 判断对象是否为空
                if(file.isDirectory()){    // 如果是目录
                    File f[] = file.listFiles() ;    // 列出全部的文件
                    if(f!=null){    // 判断此目录能否列出
                        for(int i=0;i<f.length;i++){
                            print(f[i]) ;    // 因为给的路径有可能是目录,所以,继续判断,继续递归。
                        }
                    }
                }else{
                    System.out.println(file) ;    // 输出路径
                }
            }
        }
    };

      运行结果:

    d:FDownload合并001.中国网络电视台-《诗词中国》 第一集 诗的起源[高清版].mp4
    d:FDownload合并0001.中国网络电视台-《诗词中国》 第七集 亲情诗[高清版].mp4
    d:FDownload合并0001.中国网络电视台-《诗词中国》 第三集 春江花月夜[高清版].mp4
    d:FDownload合并0001.中国网络电视台-《诗词中国》 第二集 枫桥夜泊[高清版].mp4
    d:FDownload合并0001.中国网络电视台-《诗词中国》 第五集 民歌[高清版].mp4
    d:FDownload合并0001.中国网络电视台-《诗词中国》 第六集 怀乡诗[高清版].mp4
    d:FDownload合并0001.中国网络电视台-《诗词中国》 第四集 黄鹤楼与鹳雀楼[高清版].mp4

      这里用到了,判断路径是否为文件夹:isDirection()。列出文件夹下目录方法:listFiles()。还有递归。

  • 相关阅读:
    linux 遇到(vsftpd)—500 OOPS:chroot
    linux中配置JAVA环境
    win主机ping不通linux的IP
    java:递归算法
    MySQL数据库中字段类型为tinyint,读取出来为true/false的问题
    Mybaitis-generator生成数据对象和时间的优化
    IntelliJ IDEA 2017.1.6 x64 的破解
    在eclipse中maven构建Web项目,tomcat插件在maven中的运用
    Maven 的聚合
    理解面向对象
  • 原文地址:https://www.cnblogs.com/alsf/p/5746480.html
Copyright © 2011-2022 走看看