Java之File类

2016-09-11  本文已影响272人  998584f56259

Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作。本文将对Java File文件操作类进行详细地分析,并将File类中的常用方法进行简单介绍。

File类用于封装一个路径,这个路径可以是从系统盘符开始的绝对路径,如D:\file\a.txt,也可以是相对于当前目录而言的相对路径,如src\Hello.java。File类内部封装的路径可以指向一个文件,也可以指向一个目录,在File类中提供了针对这些文件或目录的一些常规操作。

1、构造函数

public class Example5 {
 public static void main(String[] args){
     //1、构造函数:File(String pathname)
     File f1 =new File("\\abc\\1.txt");
     //2、构造函数:File(String parent,String child)
     File f2 =new File("c:\\abc","2.txt");
     //3、构造函数:File(File parent,String child)
     File f3 =new File("c:"+File.separator+"abc");//separator 跨平台分隔符
     File f4 =new File(f3,"3.txt");
     System.out.println(f1);//c:\abc\1.txt
 }
}

2、createNewFile()方法

/**
 *  createNewFile();方法
 *  1:首先需要有一个File对象实例,并且是在一个已存在的文件夹下面(不能是没有abd文件夹,然后d:\\abd\\1.txt创建)
 *  2:如果该文件已存在则返回false,不存在就返回true。
 */
public class Example6 {

public static void main(String[] args) {

    try {
        //1、构造函数:File(String pathname)
        File f1 =new File("d:\\1.txt");
        f1.createNewFile(); //不存在返回true 存在返回false
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

3、mkdir()和mkdirs()方法

/**
 *  mkdir(); :创建一级目录,创建成功就返回true,否则返回false。
 *  mkdirs();:创建多级目录,创建成功就返回true,否则返回false。
 */
public class Example7 {

public static void main(String[] args) {
    File f1 =new File("d:\\abc");
    f1.mkdir();
    File f2 =new File("d:\\abd\\lei");
    f2.mkdirs();
}

}

4、delete()和deleteOnExit()方法

/**
 * 1、delete():删除一个文件,文件存在时删除返回true,文件不存在返回false。
 * 2、deleteOnExit():文件使用完成后删除(它不会立刻删除后面可以继续使用,当在JVM终止时删除)
 */
public class Example8 {

public static void main(String[] args) {
  
   try {
      File f =new File("d:\\1.txt"); 
      System.out.println(f.createNewFile());//当文件存在时返回false
     // System.out.println(f.delete());//当文件不存在时返回false
      f.deleteOnExit();//文件使用完成后删除       
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

5、常用判断方法1

public class Example9 {

public static void main(String[] args) {
     File f =new File("d:\\1.txt"); 
     try {
        System.out.println(f.createNewFile());//当文件存在时返回false
        System.out.println(f.canExecute());//判断文件是否可执行
        System.out.println(f.canRead());//判断文件是否可读
        System.out.println(f.canWrite());//判断文件是否可写
        System.out.println(f.exists());//判断文件是否存在
        System.out.println(f.isDirectory());//判断是否是目录
        System.out.println(f.isFile());//判断是否是文件
        System.out.println(f.isHidden());//判断是否是影藏
        System.out.println(f.isAbsolute());//检查此抽象路径名是否是绝对的。
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

6、常用判断方法2

/**
* false
* 1.txt
* d:\1.txt
* d:\
* 1473497868613
* 0
*/
public class Example10 {

public static void main(String[] args) {
    File f =new File("d:\\1.txt");
    try {
        System.out.println(f.createNewFile());//当文件存在时返回false
        System.out.println(f.getName());//获取文件名
        System.out.println(f.getPath());//获取路径+文件名
        System.out.println(f.getParent());//如果没有父目录返回null
        System.out.println(f.lastModified());//获取最后一次修改的时间
        System.out.println(f.length());//0
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

7、listRoots()和list()方法

/**
file:C:\
filename:WGC95folder
filename:Windows
filename:Windows.old
filename:Windows10Upgrade
file:D:\
filename:Program Files
filename:Program Files (x86)
filename:娱乐休闲
filename:学习工作
filename:迅雷下载
file:F:\
*/
public class Example11 {
public static void main(String[] args) {
     File[] files =File.listRoots();//获取机器盘符
     for(File file:files){
         System.out.println("file:"+file);
         if(file.length()>0){
             String[] filenames =file.list();//获取盘符下的文件列表
             for(String filename:filenames){
                 System.out.println("filename:"+filename);
             }
         }
     }
}
}

8、过滤

public class Example12 {

public static void main(String[] args) {
     File[] files =File.listRoots();
     for(File file:files){
         System.out.println(file);
         if(file.length()>0){
             String[] filenames =file.list(new FilenameFilter(){
                 //file 过滤目录 name 文件名
                 public boolean accept(File file,String filename){
                     return filename.endsWith(".mp3");
                 }
             });
             for(String filename:filenames){
                 System.out.println(filename);
             }
         }
     }
}

}

9、递归列出全部文件

/**
 利用递归列出全部文件
 */
public class Example13 {

public static void main(String[] args){
    File f =new File("d:\\diff");
    showDir(f);
}
public static void showDir(File dir){
    System.out.println("第一级:"+dir);
    File[] files =dir.listFiles();
    for(File file:files){
        if(file.isDirectory())
            showDir(file);
        else 
            System.out.println("第二级:"+file);
    }
}

}

10、替换文件

/**
 * 找出d盘下所有的 .java 文件,拷贝至 c:\jad 目录下,并将所有文件的      类型由.java 修改为.jad 
 */
public class Example14 {

public static void main(String[] args){
    File f1 = new File("d:\\");
    moveFile(f1);
}

public static void moveFile(File dir){
 File[] files=dir.listFiles();
 System.out.println("第一级:"+files[0]);
 for(File file:files){
    if(file.isDirectory())
        moveFile(file);
    else{
        if(file.getName().endsWith(".java"))
            file.renameTo(new File("c:\\jad\\"+
        file.getName().substring(0,file.getName().lastIndexOf('.'))+".jad"));
        }
    }
}

}
上一篇下一篇

猜你喜欢

热点阅读