• File类


    一个File类的对象,表示了磁盘上的文件或目录

    File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作。

    File类直接处理文件和文件系统。

    File类没有指定信息怎样从文件读取或向文件存储。

    1.创建一个文件或目录

    构造方法:

    File(String directoryPath)

    File(String directoryPath, String filename)

    File(File dirObj, String filename)

    这里,directoryPath是文件的路径名,filename 是文件名,dirObj 是一个指定目录的File 对象

     1 package File;
     2 
     3 import java.io.File;
     4 import java.io.IOException;
     5 
     6 public class File1 {
     7     
     8     public static void main(String[] args) throws IOException    
     9     {
    10         File file=new File("c:\abc.txt");
    11     
    12         file.createNewFile();//创建文件,该路径的目录全部必须存在
    13         
    14         File file2=new File("c:\abc\c");
    15         
    16         file2.mkdirs();//创建目录,该路径的上一级目录可以不存在
    17         
    18         //separator(根)表示路径分隔符,即为\或者/
    19         //创建文件在对应class盘符下
    20         File file3 = new File(File.separator);
    21         
    22         File file4 = new File(file, "test.txt");
    23         
    24         System.out.println(file4.createNewFile());
    25     }
    26 }
    View Code

    File f = new File("c:\java.txt");// 这一句代码在LINUX系统下是不能使用的,因为Linux并没有盘符的概念。

    这一句代码中,使用了“\”。在java中“”被作为转义字符。第一根反斜杠成功将第二根反斜杠转义。

    这样做比较好:

    File f = new File("c:/java.txt");

    2.File类中的常用方法

    String getName()//返回文件名

    String getPath()

    String getAbsolutePath()//获取文件的绝对路径

    String getParent()//获取文件的父目录

    boolean renameTo( File newName)//重新命名

    long length()//获取文件长度

    boolean delete()//删除文件

    boolean mkdir()//创建目录

    String[] list()//返回抽象路径名表示路径中的文件名和目录名。

    boolean exists()//判断文件存在

    boolean canWrite()//是否可以写

    boolean canRead()//是否可以读

    boolean isFile()//是否为文件

    boolean isDirectory()//是否为,目录

    3.使用FilenameFilter

    希望能够限制由list()方法返回的文件数目,使它仅返回那些与一定的文件名方式或者过滤(filter)相匹配的文件。为达到这样的目的,必须使用list()的第二种形式(方法重载)String[ ] list(FilenameFilterFFObj)。该形式中,FFObj是一个实现FilenameFilter接口的类的对象。

    FilenameFilter仅定义了一个方法,accept()。该方法被列表中的每个文件调用一次。

    它的通常形式如下:

    boolean accept(File directory, String filename)

    当被directory 指定的目录中的文件(也就是说,那些与filename 参数匹配的文件)包含在列表中时,accept()方法返回true ,当这些文件没有包括在列表中时,accept()返回false

     1 import java.io.File;
     2 import java.io.FilenameFilter;
     3 
     4 public class FileTest7
     5 {
     6     public static void main(String[] args)
     7     {
     8         File file = new File("C:\abc\xyz\hello");
     9 
    10         //策略模式
    11         String[] names = file.list(new FilenameFilter()
    12         {
    13             //第一个参数表示待测试文件对应的目录,第二个参数代表测试文件本身
    14             public boolean accept(File dir, String name)
    15             {
    16                 if(name.endsWith(".txt"))
    17                 {
    18                     return true;
    19                 }
    20                 
    21                 return false;
    22             };
    23         });
    24         
    25         for(String name : names)
    26         {
    27             System.out.println(name);
    28         }
    View Code

    4.listFiles()方法

    File[ ] listFiles()

    File[ ] listFiles(FilenameFilterFFObj)

    File[ ] listFiles(FileFilterFObj)

    上述三种形式以File对象数组的形式返回文件列表,而不是用字符串形式返回。第一种形式返回所有的文件,第二种形式返回满足指定FilenameFilter接口的文件。除了返回一个File 

    象数组,这两个listFiles()方法就像list()方法一样工作。

    第三种listFiles()形式返回满足指定FileFilter的路径名的文件。FileFilter只定义了一个accept()方法,该方法被列表中的每个文件调用一次。

    它的通常形式如下:

    boolean accept(File path)

    如果文件被包括在列表中(即与path参数匹配的文件),accept()方法返回true,如果不被包括,则返回false

     1 package io;
     2 
     3 import java.io.File;
     4 
     5 public class FileTest9
     6 {
     7     public static void deleteAll(File file)
     8     {
     9         if(file.isFile() || file.list().length == 0)//判断该目录是否为空
    10         {
    11             file.delete();
    12         }
    13         else
    14         {
    15             File[] files = file.listFiles();
    16             
    17             for(File f : files)
    18             {
    19                 deleteAll(f);//删除里面的内容
    20                 
    21                 f.delete();//删除本身
    22             }
    23         }
    24     }
    25     
    26     public static void main(String[] args)
    27     {
    28         deleteAll(new File("c:\ja"));
    29     }
    30 }
    View Code
  • 相关阅读:
    POJ2559/HDU1506 Largest Rectangle in a Histogram (cartesian tree)
    POJ2201 Cartesian Tree (cartesian tree)
    一本通1007
    一本通1006
    一本通1005
    一本通1004
    一本通1003
    一本通1002
    一本通1001
    一本通1000
  • 原文地址:https://www.cnblogs.com/daneres/p/4537424.html
Copyright © 2020-2023  润新知