new file("")的结果分析

System.out.println(new File("").getAbsolutePath());即是user.dir的路径,分析代码如下

 

//File类的初始化

public File(String pathname) {

    if (pathname == null) {

        throw new NullPointerException();

    }

    //fswindow下是类Win32FileSyste

     //分析fs.normalize方法的返回值应为””

    this.path = fs.normalize(pathname);

     //分析fs.prefixLength方法的返回值应为0

    this.prefixLength = fs.prefixLength(this.path);

}

 

//getAbsolutePath方法

该方法中直接调用fs.resolve(this);代码如下

//返回this.prefixLength,即为0

int pl = f.getPrefixLength();

    if ((pl == 2) && (path.charAt(0) == slash))

        return path;         /* UNC */

    if (pl == 3)

        return path;         /* Absolute local */

    if (pl == 0)

         // getUserPath()方法主要是从System.getProperty("user.dir")取得目录

        return getUserPath() + slashify(path); /* Completely relative */

 

new File(".").getAbsolutePath()与上面的类似

fs.normalize方法的返回值应为”.”

fs.prefixLength的返回值为0

new File("aaa").getAbsolutePath()的目录也是user.dir/aaa

new File("", "aaa")时,""是parent

值为:

 public String getDefaultParent() {
 return ("" + slash);
    }

//初始化如下

public File(String parent, String child) {
 if (child == null) {
     throw new NullPointerException();
 }
 if (parent != null) {
     if (parent.equals("")) {

         //空的情况,需要注意的是如果传入的是".",则要走到else里面
          this.path = fs.resolve(fs.getDefaultParent(),
           fs.normalize(child));
     } else {

          //包括.的情况
          this.path = fs.resolve(fs.normalize(parent),
           fs.normalize(child));
     }
 } else {

     //null的情况
     this.path = fs.normalize(child);
 }
 this.prefixLength = fs.prefixLength(this.path);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值