目录的检查及创建

文件类不仅仅只表示存在的文件或目录。我们也可以用文件对象来创建新的目录或不存在的
整个目录路径。我们还可以查看文件的特性(如:大小,最后修改日期,读/写),来检查
某个文件对象代表的是一个文件还是一个目录,并可以删除这个文件。下面这段程序展示了
文件类的一些其他方法(请参考 java.sun.com 上 HTML 文档,获得全套说明)。


//: c12:MakeDirectories.java
// Demonstrates the use of the File class to
// create directories and manipulate files.
// {Args: MakeDirectoriesTest}
import com.bruceeckel.simpletest.*;
import java.io.*;


public class MakeDirectories {
    private static Test monitor = new Test();
    private static void usage() {
        System.err.println( 
      "Usage:MakeDirectories path1 ...\n" +
            "Creates each path\n" + 
      "Usage:MakeDirectories -d path1 ...\n" +
      "Deletes each path\n" +
      "Usage:MakeDirectories -r path1 path2\n" +
      "Renames from path1 to path2");
        System.exit(1); 
    } 
    private static void fileData(File f) {
    System.out.println(
            "Absolute path: " + f.getAbsolutePath() +
            "\n Can read: " + f.canRead() +
            "\n Can write: " + f.canWrite() +
            "\n  getName:  "  +  f.getName()  + 
            "\n getParent: " + f.getParent() +
            "\n getPath: " + f.getPath() +
            "\n length: " + f.length() +
      "\n lastModified: " + f.lastModified());
    if(f.isFile())
      System.out.println("It's a file");
    else if(f.isDirectory())
      System.out.println("It's a directory");
    } 
    public static void main(String[] args) {
    if(args.length < 1) usage();
    if(args[0].equals("-r")) {
            if(args.length != 3) usage(); 
            File 
        old = new File(args[1]),
        rname = new File(args[2]);
      old.renameTo(rname);
      fileData(old);
            fileData(rname); 
      return; // Exit main
        } 
        int count = 0; 
    boolean del = false;
    if(args[0].equals("-d")) {
            count++; 
            del = true; 
        } 
    count--;
    while(++count < args.length) {
      File f = new File(args[count]);
      if(f.exists()) {
                System.out.println(f + " exists"); 
                if(del) { 
          System.out.println("deleting..." + f);
                    f.delete(); 
                } 
            } 
      else { // Doesn't exist
                if(!del) { 
          f.mkdirs();
                    System.out.println("created " + f); 
                } 
            } 
      fileData(f);
        } 
    if(args.length == 1 &&
        args[0].equals("MakeDirectoriesTest"))
      monitor.expect(new String[] {
        "%% (MakeDirectoriesTest exists"+
                    "|created MakeDirectoriesTest)", 
                "%% Absolute path: " 
                    + "\\S+MakeDirectoriesTest", 
                "%%    Can read: (true|false)", 
                "%%    Can write: (true|false)", 
                " getName: MakeDirectoriesTest", 
                " getParent: null", 
                " getPath: MakeDirectoriesTest", 
                "%%    length: \\d+", 
                "%%    lastModified: \\d+", 
                "It's a directory" 
            }); 
    } 
} ///:~


我们可以看到在 fileDate()中,用到了多种不同的文件特征查询方法来显示文件或目录
路径的信息。


main()方法首先调用的是 renameTo(),用来重命名(或移动)一个文件到由参数所
指示的另一个完全不同的路径(也就是另一文件对象)下面。这同样适用于任意长度的文件
目录。


实践上面的程序,我们会发现,我们可以产生任意复杂的目录路径,因为 mkdirs()可以

为我们做好这一切。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值