java 下载到相对目录_Java在Windows下的"绝对路径", "完全相对路径" 和 "目录相对路径"等路径表示法...

本文探讨了Java在Windows下使用File类构造File对象时,'e:'和'e:\"的区别。实验表明,当程序的当前路径位于E盘时,两者行为不同。'e:'表示当前E盘的工作路径,而'e:\"则表示E盘根目录。通过分析源码,揭示了Java如何处理这两种路径表示,并解释了不同工作路径下File对象的行为差异。
摘要由CSDN通过智能技术生成

额, 不得不说, 论坛是个好地方, 每隔几天总有很好的问题出现. 这篇博客还是因为一个有意思的帖子. 这次的问题和路径的表示方法有关. 帖子在这里: 《求java大神,关于se中的文件操作》

注: “完全相对路径”和”目录相对路径” 的英文分别为 “Completely relative”, “Directory-relative”, 限于本人英文水平, 翻译的可能有些问题, 还请大家指导

原问题

帖子地址: http://bbs.csdn.net/topics/391025871.

问题的大致意思是说: 当使用File(String pathname)去构造一个File对象是, 参数"e:"和"e:\\"有什么区别?

估计大多数人和我最开始的想法一样: 没区别. 然后下面就有位仁兄截了个图, 证明这两个是有区别的. 本着实事求是的精神, 我也测了测, 发现当java程序的当前路径在e盘时, "e:"和"e:\\"还真不一样…

源程序

为了方便说明问题, 这里的源程序跟帖子上稍微有点区别.

import java.io.*;

class Test

{

public static void main(String[] args)

{

digui(new File("e:"));

digui(new File("e:\\"));

}

public static void digui(File f)

{

System.out.println(f.getPath());

if( !f.exists() ){

System.out.println("not exist");

return;

}

File [] name = f.listFiles();

System.out.println(name.length);

for(int i = 0 ;i < name.length; i++)

{

System.out.println(name[i]);

}

}

}

将这个程序中的 "e:"和"e:\\"改成自己的工作盘符, 运行程序, 就会发现这两个路径的区别…

API文档上有关的说明

为了解释这个现象, 我首先查看了File类的文档, 看看有没有什么特殊说明. 只是发现了这样一句话

对于 Microsoft Windows 平台,包含盘符的路径名前缀由驱动器号和一个 “:” 组成。如果路径名是绝对路径名,还可能后跟 “\\”。

注意, 上面说如果是绝对路径名, 还可能跟"\\". 也就是说, 即使是以 驱动器号+”:” 开始的路径, 也不一定是绝对路径!

同时,经过测试, getPath方法得到的并不是完整的路径!仅仅是把我们传进去的参数标准化了而已.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值