• Java从零开始学三十三(JAVA IO- File类)


    一、简述

    在整个io包中,唯一表示与文件本身有关的类就是File类。使用File类可以进行创建或删除文件等常用操作。要想使用File类,则首先要观察File类的构造方法,此类的常用构造方法如下所示:
    public File(String pathname) ->实例化File类的时候,必须设置好路径。

    二、File类中的主要方法和常量

    No.
    方法或常量
    类型
    描述
    1
    public static final String pathSeparator
    常量
    表示路径的分隔符(windows是:“;”)
    2
    public static final String separator
    常量
    表示路径的分隔符(windows是:“”)
    3
    public File(String pathname)
    构造
    创建File类对象,传入完整路径
    4
    public boolean createNewFile() throws IOException
    普通
    创建新文件
    5
    public boolean delete()
    普通
    删除文件
    6
    public boolean exists()
    普通
    判断文件是否存在
    7
    public boolean isDirectory()
    普通
    判断给定的路径是否是一个目录
    8
    public long length()
    普通
    返回文件的大小
    9
    public String[] list()
    普通
    列出指定目录的全部内容,只是列出了名称
    10
    public File[] listFiles()
    普通
    列出指定目录的全部内容,会列出路径
    11
    public boolean mkdir()
    普通
    创建一个目录
    12
    public boolean renameTo(File dest)
    普通
    为已有的文件重新命名

     三、创建一个新文件

    3.1、直接创建文件:

    package com.pb.file.demo1;
    
    import java.io.File;
    import java.io.IOException;
    
    public class FileDemo1 {
    
        public static void main(String[] args) {
          File file=new File("d:/test.txt");    //声明一个文件对象
          
          try {
            boolean flag=file.createNewFile(); //根据路径创建文件返回类型为Boolean类型
            if(flag){
                System.out.println("文件创建成功");
            }else{
                System.out.println("文件创建失败");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    
        }
    
    }

    3.2 在不同的操作系统中,路径的分隔符表示是不一样的

    windows中使用反斜杆表示目录的分隔符:“” ;
    linux中使用正斜杆表示目录的分隔符:“/”。
     
    package com.pb.file.demo1;
    
    import java.io.File;
    
    public class FileDemo2 {
    
        public static void main(String[] args) {
            System.out.println(File.pathSeparator); // 调用静态常量
    
            System.out.println(File.separator); // 调用静态常量
    
        }
    
    }

    结果:

    ;
    

    3.3、修改创建文件的代码

    使用静态常量连接

    package com.pb.file.demo1;
    
    import java.io.File;
    import java.io.IOException;
    
    public class FileDemo1 {
    
        public static void main(String[] args) {
            String path="d:"+File.separator+"test1.txt";
          File file=new File(path);    //声明一个文件对象
          
          try {
            boolean flag=file.createNewFile(); //根据路径创建文件返回类型为Boolean类型
            if(flag){
                System.out.println("文件创建成功");
            }else{
                System.out.println("文件创建失败");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    
        }
    
    }

     四、删除文件

    4.1、不判断文件是否存在直接删除

    package com.pb.file.demo1;
    
    import java.io.File;
    import java.io.IOException;
    
    public class FileDemo3 {
    
        public static void main(String[] args) {
            String path="d:"+File.separator+"test.txt";
          File file=new File(path);    //声明一个文件对象
          
          boolean flag=file.delete(); //根据路径删除文件返回类型为Boolean类型
        if(flag){
            System.out.println("文件删除成功");
        }else{
            System.out.println("文件删除失败");
        }
    
        }
    
    }

    4.2、判断文件是否存在再执行删除

    package com.pb.file.demo1;
    
    import java.io.File;
    import java.io.IOException;
    
    public class FileDemo3 {
    
        public static void main(String[] args) {
            String path = "d:" + File.separator + "test.txt";
            File file = new File(path); // 声明一个文件对象
            if (file.exists()) {
                boolean flag = file.delete(); // 根据路径删除文件返回类型为Boolean类型
                    if (flag) {
                        System.out.println("文件删除成功");
                    } else {
                        System.out.println("文件删除失败");
                    }
            } else {
                System.out.println("文件不存在!");
            }
    
        }
    
    }

    4.3、结合上面2个例子实现创建与删除

    package com.pb.file.demo1;
    
    import java.io.File;
    import java.io.IOException;
    
    public class FileDemo4 {
    
        public static void main(String[] args) {
            String path = "d:" + File.separator + "test.txt";
            File file = new File(path); // 声明一个文件对象
            if(file.exists()){   //判断文件是否存在如果存在就删除
                file.delete();
                System.out.println("文件存在,删除成功!");
            }else{//判断文件是否存在如果不存在就创建
                try {
                    file.createNewFile();
                    System.out.println("文件不存在,创建成功!");
                } catch (IOException e) {
                    e.printStackTrace();
                }
                
            }
    
        }
    
    }

    五、创建文件夹

    5.1、创建一个文件夹mkdir

    package com.pb.file.demo1;
    
    import java.io.File;
    import java.io.IOException;
    
    public class FileDemo5 {
    
        public static void main(String[] args) {
            String path = "d:" + File.separator + "test";
            File file = new File(path); // 声明一个文件对象
            if(!file.exists()){
            boolean flag=file.mkdir();                //创建文件夹
                if(flag){
                    System.out.println("文件夹创建成功");
                }
            }else{
                System.out.println("已经存在这个名称的文件夹!");
            }
    
        }
    
    }

    5.2、创建一个多层文件夹mkdirs

    package com.pb.file.demo1;
    
    import java.io.File;
    import java.io.IOException;
    
    public class FileDemo5 {
    
        public static void main(String[] args) {
            String path = "d:" + File.separator + "test"+ File.separator + "test1"+ File.separator + "test2";
            File file = new File(path); // 声明一个文件对象
            if(!file.exists()){
            boolean flag=file.mkdirs();                //创建文件夹
                if(flag){
                    System.out.println("文件夹创建成功");
                }
            }else{
                System.out.println("已经存在这个名称的文件夹!");
            }
    
        }
    
    }

    5.3、列出目录下的全部内容

    package com.pb.file.demo1;
    
    import java.io.File;
    import java.io.IOException;
    
    public class FileDemo6 {
    
        public static void main(String[] args) {
            String path = "f:" + File.separator ;
            File file = new File(path); // 声明一个文件对象
            System.out.println("============只列出文件夹和文件的名称===============");
            String [] str=file.list();//列出目录中的全部内容文件夹和文件
            //此方法只列出文件夹和文件的名称
            for (int i = 0; i < str.length; i++) {
                System.out.println(str[i].toString());
            }
            System.out.println("==============列出路径、文件夹和文件的名称=================");
            File[] file1=file.listFiles();        //列出目录中的全部内容文件夹和文件
            //此方法会列出路径、文件夹和文件的名称
            for (int i = 0; i < file1.length; i++) {
                System.out.println(file1[i].toString());
            }
            
        }
    
    }

    结果:

    ============只列出文件夹和文件的名称===============
    $RECYCLE.BIN
    download
    eclipse-kepler
    html
    java
    java web
    javascript
    javastudy
    jquery
    js
    jsp
    jsptest
    linux
    ORACLE
    oracle学习笔记
    shop
    System Volume Information
    t
    tools
    vm
    软件
    ==============列出路径、文件夹和文件的名称=================
    f:$RECYCLE.BIN
    f:download
    f:eclipse-kepler
    f:html
    f:java
    f:java web
    f:javascript
    f:javastudy
    f:jquery
    f:js
    f:jsp
    f:jsptest
    f:linux
    f:ORACLE
    f:oracle学习笔记
    f:shop
    f:System Volume Information
    f:	
    f:	ools
    f:vm
    f:软件

    5.3、增加判断是文件还是目录

    先判断给出一是不是目录

    package com.pb.file.demo1;
    
    import java.io.File;
    import java.io.IOException;
    
    public class FileDemo7 {
    
        public static void main(String[] args) {
            String path = "g:" + File.separator ;
            File file = new File(path); // 声明一个文件对象
            
            if(file.isDirectory()){
                System.out.println(file.getPath()+"是目录!");
            }
            if(file.isFile()){
                System.out.println(file.getPath()+"是文件!");
            }
            
        }
    
    }
    package com.pb.file.demo1;
    
    import java.io.File;
    import java.io.IOException;
    
    public class FileDemo7 {
        
        
        public void print(File file){
            if(file.exists()){  //判断给定的目录或者文件是否存在
                System.out.println("=============路径存在=========");
            if(file.isDirectory()){
                System.out.println(file.getPath()+"是目录! 将会列出目录下的所有文件!==============");
                File    [] f=file.listFiles();                        //是目录就列出目录下的所有内容
                for (int i = 0; i < f.length; i++) {
                    if(f[i].isDirectory()){
                        System.out.println(f[i]+"	是目录!");
                    }else{
                    System.out.println(f[i]+"	是文件!");
                    }
                }
            }else{                //不是目录就打印路径信息
                System.out.println(file+"	是文件!");
            }
            }else{
                System.out.println(file+"=============路径不存在!=============");
            }
        }
    
        public static void main(String[] args) {
            String path = "g:" + File.separator ;
            File file = new File(path); // 声明一个文件对象
            FileDemo7 fd=new FileDemo7();
            fd.print(file);
            
            
            
        }
    
    }

    结果:

    =============路径存在=========
    g:是目录! 将会列出目录下的所有文件!==============
    g:$RECYCLE.BIN    是目录!
    g:Adobe Dreamweaver CS5    是目录!
    g:Adobe Dreamweaver CS5.rar    是文件!
    g:atm    是目录!
    g:atm.rar    是文件!
    g:eclipse    是目录!
    g:eclipse-kepler    是目录!
    g:html    是目录!
    g:java    是目录!
    g:jsp    是目录!
    g:orcale    是目录!
    g:SqlHistory.xml    是文件!
    g:System Volume Information    是目录!
    g:~1    是目录!
    g:书    是目录!
    g:停止..bat    是文件!
    g:启动.bat    是文件!
    g:源    是目录!
    g:第三方控件    是目录!

    六、其它的一些方法

    package com.pb.file.demo1;
    
    import java.io.File;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /*
     * 文件操作的一些方法
     */
    public class FileMethods {
    
        public static void main(String[] args) throws IOException {
            //实例化File类对象
            File f=new File("d:"+File.separator+"test"+File.separator+"hello.txt");
            //文件文件属性
            System.out.println("文件名:"+f.getName());
            //相对路径
            System.out.println("相对路径:"+f.getParent());
            //绝对路径
            System.out.println("绝对路径:"+f.getAbsolutePath());
            //获取文件的父级目录,上一级目录
            System.out.println("上一级目录"+f.getParent());
            //当前文件是否存在
            System.out.println(f.exists()?"文件存在":"文件不存在");
            //是不是个文件
            System.out.println(f.isFile()?"是文件":"不是文件");
            //文件长度
            System.out.println("文件长度:"+f.length());
            //是不是个文件
            System.out.println(f.isDirectory()?"是文件夹":"不是文件夹");
            //是否可以 读
            System.out.println(f.canRead()?"文件可读":"文件不可读");
            //是否可以写
            System.out.println(f.canRead()?"文件可写":"文件不可写");
            //最后一次修改的时间
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date=new Date(f.lastModified());
            System.out.println("最后修改的时间:"+sdf.format(date));
            //新建
            if(!f.exists()){    //如果文件不存在就创建
                f.createNewFile();
                System.out.println("创建文件");
            }else{
                //如果存在就删除
                f.delete();
                System.out.println("删除文件");
            }
            
        }
    
    }
  • 相关阅读:
    Android(java)学习笔记68:使用proguard混淆android代码
    SGU 194 Reactor Cooling
    关于流量有上下界的网络流问题的求解
    关于最小割的求解方法
    HDU 5311 Hidden String
    POJ 3548 Restoring the digits
    POJ 2062 HDU 1528 ZOJ 2223 Card Game Cheater
    ZOJ 1967 POJ 2570 Fiber Network
    HDU 1969 Pie
    HDU 1956 POJ 1637 Sightseeing tour
  • 原文地址:https://www.cnblogs.com/liunanjava/p/4305790.html
Copyright © 2020-2023  润新知