新手发现java7 API的一个bug??

FengPrince 2012-08-06 04:39:43

import java.nio.file.*;

class Test
{
public static void main(String[] args)
{
Path p=Paths.get(".");
System.out.println(p.getNameCount());

}
}


如果你把“.”换成当前路径,再运行一遍发现结果不一致。
应该不是bug,但JAVA究竟是如何处理和看待这个“.”东东的??

API Specifications follow below:

int getNameCount()

Returns the number of name elements in the path.

Returns:
the number of elements in the path, or 0 if this path only represents a root component
...全文
325 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
piaoshen 2013-01-17
  • 打赏
  • 举报
回复
"." 相对于虚拟机的当前目录。 一般是 %JAVA_HOME%/bin
  • 打赏
  • 举报
回复
这尼玛真是个bug.....
"."在path类型中没翻译成本地绝对路径, 导致count=1

plus: getNameCount()这个函数不好, "C:\\a\\"是1, "C:\\a\\."是2, 在C:\\a\\目录下, "."是1
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

可能是我没有表达清楚,LS几位说的我都知道。
我想问的是“." “..”这两个作为特殊含义的符号,JAVA是把它当作当前路径和父路径,但这种意义几乎不能体现在对路径的处理上?可能说得有点晦涩。
就是说,“." “..”相当于代表相对路径字符串,但JAVA在处理路径字符串时只把它们当作普通的“." “..”字面值。它们没有根目录,没有父目录,它们不能进行正确的resolve解析等等。。。。我只……
[/Quote]
我明白楼主的意思了, 我去测试下
zhuzeitou 2012-08-08
  • 打赏
  • 举报
回复
本来就是这么设计的吧……
要翻译成绝对路径,请调用toAbsolutePath这个方法
FengPrince 2012-08-07
  • 打赏
  • 举报
回复
可能是我没有表达清楚,LS几位说的我都知道。
我想问的是“." “..”这两个作为特殊含义的符号,JAVA是把它当作当前路径和父路径,但这种意义几乎不能体现在对路径的处理上?可能说得有点晦涩。
就是说,“." “..”相当于代表相对路径字符串,但JAVA在处理路径字符串时只把它们当作普通的“." “..”字面值。它们没有根目录,没有父目录,它们不能进行正确的resolve解析等等。。。。我只知道,Path类在处理时并没有检查实际的文件系统,只是对字符串进行处理,不知道是不是这个原因,JAVA把“." “..”当作普通的字符串进行处理,但我觉得JAVA应该把它们替换成实际的相对路径字符串。
唉,不知道我说清楚没。。。
Ade子夜 2012-08-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

可以通过这个看一下结果不一致的两次Path代表的路径各自是什么,尤其是"."
System.out.format("toString: %s%n", p.toString());
[/Quote]
ding
dracularking 2012-08-07
  • 打赏
  • 举报
回复
可以通过这个看一下结果不一致的两次Path代表的路径各自是什么,尤其是"."
System.out.format("toString: %s%n", p.toString());
  • 打赏
  • 举报
回复
你用Ide的话可以断点path ,.应该是表示当前运行的class 文件位置的
  • 打赏
  • 举报
回复
你用Ide的话可以断点path ,.应该是表示当前运行的class 文件位置的
  • 打赏
  • 举报
回复
你用Ide的话可以断点path ,.应该是表示当前运行的class 文件位置的
FengPrince 2012-08-06
  • 打赏
  • 举报
回复
这个貌似是具体路径没有什么关系吧,应该与JAVA对待“."或”.."的方式有关。。。。
FengPrince 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

你当前路径是什么?
[/Quote]
G:\Programming\JAVA
  • 打赏
  • 举报
回复
你当前路径是什么?

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧