zoukankan      html  css  js  c++  java
  • File 操作

    在整个io包中,唯一表示与文件本身有关的类就是File类。使用File类可以进行创建或删除文件等常用操作,要想使用File类,则首先要观察File类的构造方法,此类的常用构造方法如下:

    File类中的主要方法和常量:

    方法或常量

    类型

    描述

    public static final String pathSeparator

    常量

    表示路径的分隔符(windows:‘;’)

    public static final String separator

    常量

    表示路径分隔符(windows:‘’)

    public File(String pathname)

    构造

    创建File类对象,传入完整的路径

    public boolean createNewFile() throws IOException

    普通

    创建新文件

    public boolean exists()

    普通

    判断文件是否存在

    public boolean delete()

    普通

    删除文件

    public boolean isDirectory()

    普通

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

    public long length()

    普通

    返回文件的大小

    public String[] list()

    普通

    列出指定目录的全部内容,只是名称

    public File[] listFiles()

    普通

    列出指定目录的全部内容,会列出路径。

    public boolean mkdir()

    普通

    创建一个目录

    public boolean renameTo(File dest)

    普通

    为已有的文件重命名

    下面我们将针对主要方法进行讲解和代码示例演练:

    1)File 常量

    复制代码
    package com.pony1223.file;
    
    import java.io.File;
    
    /**
     * 两个常量
     * 1、路径分隔符  ;
     * 2、名称分隔符 /(windows)  /(linux 等)
     * @author Pony
     *
     */
    public class Demo01 
    {
        public static void main(String[] args)
        {
            System.out.println(File.pathSeparator);
            System.out.println(File.separator);
            String path = "E:\study\java\HelloWorld.java";
            String path1 = "E:"+File.separator+"study"+File.separator+"java"+File.separator+"HelloWorld.java";
            String path2 = "E:/study/java/HelloWorld.java";//推荐方式
        }
    
    }
    复制代码

    2)使用绝对路径和相对路径构造文件File类

    复制代码
    package com.pony1223.file;
    
    import java.io.File;
    
    /**
     * 两个常量
     * 1、路径分隔符  ;
     * 2、名称分隔符 /(windows)  /(linux 等)
     * @author Pony
     *
     */
    public class Demo02 
    {
        public static void main(String[] args)
        {
            String parentPath = "E:/study/java";
            String name = "HelloWorld.java";
            //相对路径
            File src =new File(parentPath,name);
            src =new File(new File(parentPath),name);
            //输出
            System.out.println(src.getName());
            System.out.println(src.getPath());
            //绝对路径
            src =new File("E:/study/java/HelloWorld.java");
            System.out.println(src.getName());
            System.out.println(src.getPath());
            //没有盘符: 以 user.dir构建
            src =new File("test.txt");//使用相对路径,注意如果在路径中没有盘符,文件则放在工程项目下
            //src =new File(".");
            System.out.println(src.getName());//test.txt
            System.out.println(src.getPath());//test.txt
            System.out.println(src.getAbsolutePath());//G:DevelopeHomeMyEclipseWorkSpaceCollections	est.txt
            
            /**
             * getPath:如果构建文件路径是绝对路径则返回完整路径,否则返回相对路径 
             * getAbsolutePath:返回绝对路径(完整路径)  
             * getCanonicalPath:不但是全路径,而且把..或者.这样的符号解析出来。
             */
        }
    }
    复制代码

    3)判断文件(true/false)

    复制代码
    //判断文件是否存在  
    System.out.println(f.exists());//true  
              
    //判断文件是否可读,可写canWrite()   
    System.out.println(f.canRead());//true  
              
    //判断文件路径是否为绝对路径,有盘符则为绝对路径  
    System.out.println(f.isAbsolute());//true  
              
    //判断是文件isFile还是文件夹isDirectory  
    System.out.println(f.isDirectory());//false  
    复制代码

    4)返回文件长度,以字节为单位

    假设文件内容为aswdwdad,长度为8个字节,注意如果是文件夹,字节数不为0,这里也返回0 即 只有文件才能读出长度,文件夹不可

    1
    System.out.println(f.length());//8 

    5)创建和删除文件 

    (1)创建文件createNewFile()
    若文件已经存在,则创建会返回false,若文件名为操作系统关键字,比如con,也会返回false
    (2)删除文件delete()

    复制代码
    File f=new File("F:/Java/test.txt");  
    if(!f.exists()){  
        try {  
            boolean flag = f.createNewFile();  
            System.out.println(flag?"success":"fail");//fail  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }     
    }  
              
    f.delete();  
    复制代码

    6)两个静态方法创建临时文件

    复制代码
    File f1=File.createTempFile("wees", ".temp",new File("F:/JAVA"));  
    //F:JAVAwees7063380687067821023.temp  
    System.out.println(f1.getAbsolutePath());  
                  
    File f2=File.createTempFile("wes", ".temp");  
    //C:UserswwyDEPPAppDataLocalTempwes8047158297297613408.temp  
    System.out.println(f2.getAbsolutePath());  
    复制代码

    注意点;
    当我们创建一个新的File对象,所给的路径不是根盘路径时,文件会自动放在项目文件夹下;但是使用静态方法创建一个临时文件,所给路径不是根盘路径时,文件是放在C盘下的某文件夹下的

    7)操作目录

    (1)mkdir()创建目录,确保父目录存在,如果不存在,创建失败
    (2)mkdirs()创建目录,如果父目录链不存在,一同创建
    (3)list()输出目录文件夹下所包括的文件名
    (4)listFiles()输出目录文件夹下所包括的文件
    (5)listFiles(filter)输出目录文件夹下所包括的特定文件(.txt)

    复制代码
    String path="F:/Picture/test";  
    File file=new File(path);  
    file.mkdir();  
              
    System.out.println("输出目录文件夹下所包括的文件名");  
    String path2="F:/Picture";  
    File file2=new File(path2);  
    if(file2.isDirectory()){  
        String[] strs=file2.list();  
        for(String s:strs){  
            System.out.println(s);  
        }  
    }  
              
    System.out.println("输出目录文件夹下所包括的文件");  
    if(file2.isDirectory()){  
        File[] files=file2.listFiles();  
        for(File f:files){  
            System.out.println(f.getAbsolutePath());  
        }  
    }  
              
    System.out.println("输出目录文件夹下所包括的特定文件(.txt),命令设计模式");  
    if(file2.isDirectory()){  
        File[] files=file2.listFiles();  
        files=file2.listFiles(new FilenameFilter(){  
      
            @Override  
            public boolean accept(File dir, String name) {  
              
                return new File(dir,name).isFile()&&name.endsWith(".txt");  
            }  
                      
        });  
                  
        for(File f:files){  
            System.out.println(f.getAbsolutePath());  
        }  
    } 
    复制代码

    结果:

    复制代码
    输出目录文件夹下所包括的文件名  
    EFI.png  
    NTFS.png  
    test  
    test.txt  
    输出目录文件夹下所包括的文件  
    F:PictureEFI.png  
    F:PictureNTFS.png  
    F:Picture	est  
    F:Picture	est.txt  
    输出目录文件夹下所包括的特定文件(.txt),命令设计模式  
    F:Picture	est.txt  
    复制代码
  • 相关阅读:
    高精度乘法
    使用BFG清除git仓库中的隐私文件或大文件
    java运行的问题
    eclipse编写的java程序在dos环境下运行的写法
    win32汇编实现阶乘和斐波那契数列
    十个数字不同,实现加减乘。暴力枚举法
    实现一个类模板
    循环队列类模板和函数模板c++实例
    C++析构函数为什么要为虚函数
    1012-Joseph 约瑟夫问题
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10328856.html
Copyright © 2011-2022 走看看