zoukankan      html  css  js  c++  java
  • 【JavaSE】IO(1)-- File类

    File类


     2019-07-01  22:41:42  by冲冲

    在 Java 中,File 类是 java.io 包中唯一映射磁盘文件本身的对象。File类可以获取文件的相关信息(查看文件名、路径、访问权限、修改日期等),但是File 类不能从文件中读取信息和向文件写入信息

    1. File类的三种构造方法

     1 //File(File parent,String child):根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
     2 File parent = new File("E:\test");
     3 File child = new File(parent, "demo.txt");
     4 
     5 //File(String pathname):通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。如果给定字符串是空字符串,则结果是空的抽象路径名。
     6 File file = new File("E:\test\demo.txt");
     7 
     8 //File(String parent,String child):根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
     9 String parent = "E:\test\";
    10 String child = "demo.txt";
    11 File file = new File(parent,child);

    注意:Windows操作系统的路径,如 E:demohello.java,在Java程序中,其路径写为 E:/demo/hello.java 或者 E:\demo\hello.java

    2. File类的主要功能

    (1)获取文件属性

     1 import java.io.File;
     2 import java.util.Date;
     3 
     4 public class File_test {
     5     public static void main(String[] args){
     6         File f=new File("E:\test\hello.doc");    //抽象路径名为"E:\test\hello.doc"
     7         System.out.println("获取文件 E:\test\hello.doc 的信息:");
     8         System.out.println("-------------------------------");
     9         System.out.println("文件长度:"+f.length()+"字节");
    10         System.out.println("判断该File对象是不是文件:"+(f.isFile()?"是文件":"不是文件"));
    11         System.out.println("判断该File对象是不是目录:"+(f.isDirectory()?"是目录":"不是目录"));
    12         System.out.println("是否可读:"+(f.canRead()?"可读取":"不可读取"));
    13         System.out.println("是否可写:"+(f.canWrite()?"可写入":"不可写入"));
    14         System.out.println("是否隐藏:"+(f.isHidden()?"是隐藏文件":"不是隐藏文件"));
    15         System.out.println("最后修改日期:"+new Date(f.lastModified()));
    16         System.out.println("文件名称:"+f.getName());
    17         System.out.println("文件父路径:"+f.getParent());
    18         System.out.println("抽象路径名转化为路径名字符串:"+f.getPath());    //等价于 f.toString()
    19         System.out.println("判断抽象路径名是否为绝对路径:"+(f.isAbsolute()?"是绝对路径":"不是绝对路径"));
    20         System.out.println("文件绝对路径:"+f.getAbsolutePath());
    21         System.out.println("-------------------------------");
    22     }
    23 }

    运行结果

    获取文件 E:	esthello.doc 的信息:
    -------------------------------
    文件长度:9216字节
    判断该File对象是不是文件:是文件
    判断该File对象是不是目录:不是目录
    是否可读:可读取
    是否可写:可写入
    是否隐藏:不是隐藏文件
    最后修改日期:Mon Jul 01 21:20:47 CST 2019
    文件名称:hello.doc
    文件父路径:E:	est
    抽象路径名转化为路径名字符串:E:	esthello.doc
    判断抽象路径名是否为绝对路径:是绝对路径
    文件绝对路径:E:	esthello.doc
    -------------------------------

    public boolean setReadOnly():设置该文件只能读,不能写。

    1 public static void main(String[] args) {
    2         File f = new File("E:\test\hello.doc"); // 抽象路径名为"E:\test\hello.doc"
    3         f.setReadOnly();
    4         System.out.println("是否可读:" + (f.canRead() ? "可读取" : "不可读取"));
    5         System.out.println("是否可写:" + (f.canWrite() ? "可写入" : "不可写入"));
    6     }

    运行结果

    是否可读:可读取
    是否可写:不可写入

    (2)创建和删除文件、创建和删除目录、遍历目录list()和list()

    String[] list()该方法表示返回由 File 对象表示目录中所有文件和子目录名称组成的字符串数组,如果调用的 File 对象不是目录,则返回 null。

    提示:list() 方法返回的数组中仅包含文件名称,而不包含路径。但不保证所得数组中的相同字符串将以特定顺序出现,特别是不保证它们按字母顺序出现。

     1 package test0607;
     2 
     3 import java.io.File;
     4 import java.io.IOException;
     5 import java.util.Date;
     6 
     7 public class File_test {
     8     public static void main(String[] args) throws IOException {
     9         File nf = new File("E:/test/new_file.doc"); // 创建指向文件 E:/test/new_file.doc 的File对象
    10         if (nf.exists()) // 判断该文件是否存在
    11         {
    12             nf.delete(); // 存在则先删除
    13         }
    14         nf.createNewFile(); // 再创建该文件
    15 
    16         File dir = new File("E:/test01"); // 创建指向目录 E:/test01 的File对象
    17         if (dir.exists()) // 判断该目录是否存在
    18         {
    19             dir.delete(); // 存在则先删除
    20         }
    21         dir.mkdir(); // 再创建该目录
    22 
    23         File lf = new File("E:/test/"); // 创建需要遍历的File对象
    24         System.out.println("文件类型	文件大小	文件名称");
    25         System.out.println("------------------------------");
    26         String fileList[] = lf.list(); // 调用不带参数的list()方法
    27         for (int i = 0; i < fileList.length; i++) { // 遍历返回的字符数组
    28             System.out.print((new File("E:/test/", fileList[i])).isFile() ? "文件" + "	" : "文件夹" + "	");
    29             System.out.print((new File("E:/test/", fileList[i])).length() + "字节" + "	");
    30             System.out.println(fileList[i]);            
    31             // 由于 list()方法返回的字符数组中仅包含文件名称,因此为了获取文件类型和大小,必须先转换为 File对象再调用其方法。
    32         }
    33         System.out.println("------------------------------");
    34     }
    35 }

    运行结果

    文件类型    文件大小    文件名称
    ----------------------------------
    文件夹    0字节        dir01
    文件夹    0字节        dir02
    文件      0字节        good.bmp
    文件      9216字节     hello.doc
    文件      0字节        hi.txt
    文件      0字节        new_file.doc
    ----------------------------------

     

    String[] list(FilenameFilter filter): 该方法的作用与 list() 方法相同,不同的是返回数组中仅包含符合 filter过滤器 的文件和目录,如果 filter 为 null,则接受所有名称。

    首先需要创建文件过滤器,该过滤器必须实现 java.io.FilenameFilter 接口,并在 accept() 方法中指定允许的文件类型。

     1 import java.io.File;
     2 import java.io.FilenameFilter;
     3 import java.io.IOException;
     4 import java.util.Date;
     5 
     6 class DocFilter implements FilenameFilter
     7 {
     8     //实现 FilenameFilter 接口
     9     @Override
    10     public boolean accept(File dir,String name)
    11     {
    12         //指定允许的文件类型
    13         return name.endsWith(".txt")||name.endsWith(".bmp");
    14     }
    15 }
    16 
    17 public class File_test03 {
    18     public static void main(String[] args) throws IOException {
    19         File lf = new File("E:/test/"); // 创建需要遍历的File对象
    20         System.out.println("文件类型	文件大小	文件名称");
    21         System.out.println("------------------------------");
    22         String fileList[] = lf.list(new DocFilter()); // 调用不带参数的list()方法
    23         for (int i = 0; i < fileList.length; i++) { // 遍历返回的字符数组
    24             System.out.print((new File("E:/test/", fileList[i])).isFile() ? "文件" + "	" : "文件夹" + "	");
    25             System.out.print((new File("E:/test/", fileList[i])).length() + "字节" + "	");
    26             System.out.println(fileList[i]);            
    27             // 由于 list()方法返回的字符数组中仅包含文件名称,因此为了获取文件类型和大小,必须先转换为 File对象再调用其方法。
    28         }
    29         System.out.println("------------------------------");
    30     }
    31 }

    运行结果

    文件类型    文件大小    文件名称
    ------------------------------
    文件       0字节      good.bmp
    文件       0字节      hi.txt
    ------------------------------
  • 相关阅读:
    Python 编码错误解决方案
    Slf4j 打日志的问题 Exception 没有堆栈信息
    朋友遇到过的t厂面试题
    php 加密解密算法
    mysql replace into用法详细说明
    python3 return print 之间的差异
    mac多版本python安装 pymysql
    thinkphp 在做搜索时的注意点
    get_object_vars()
    php中var关键字的作用和意义
  • 原文地址:https://www.cnblogs.com/yadiel-cc/p/11117276.html
Copyright © 2011-2022 走看看