getAbsolutePath 和实际路径不符?

IDE:eclipse mars 目录结构: [图片] 使用getAbsolutePath获得的路径: E:\javaEE文件\MyProject_B…
关注者
5
被浏览
3,957

2 个回答

我也遇到了.

File f1 = new File("tick.log");
f1.createNewFile();
log.info("探测文件默认目录: {}", f1.getAbsolutePath());

/root/TongWeb7.0/bin/tick.log


但是实际文件在:

[root@localhost logs]# find / | grep tick.log

/root/tick.log



....

亲爱的波哥

@oTvTo

,让我们来看API:

public String getAbsolutePath()

返回此抽象路径名的绝对路径名字符串。

如果此抽象路径名已经是绝对路径名,则返回该路径名字符串,这与 getPath() 方法一样。如果此抽象路径名是空抽象路径名,则返回当前用户目录的路径名字符串,该目录由系统属性 user.dir 指定。否则,使用与系统有关的方式解析此路径名。在 UNIX 系统上,根据当前用户目录解析相对路径名,可使该路径名成为绝对路径名。在 Microsoft Windows 系统上,根据路径名指定的当前驱动器目录(如果有)解析相对路径名,可使该路径名成为绝对路径名;否则,可以根据当前用户目录解析它。

返回:绝对路径名字符串,它与此抽象路径名表示相同的文件或目录抛出:

SecurityException

- 如果无法访问所需的系统属性值。另请参见:

isAbsolute()



这个user.dir 又是多少呢?

import java.util.Set;
import java.util.Properties;
public class HelloBoge{

        public static void main(String[] ays){
		printProperties();	
	}

	
	public static void printProperties() {
		Properties pes = System.getProperties();
		Set<String> set = pes.stringPropertyNames();
		for (String str : set) {
			System.out.printf("%-29s=%s\n", str,
			pes.getProperty(str));
		}
	}
}

































正在下Eclipse EE .....所以上面都是我胡说八道的。。

等我复现了你这个情况再来强答。。

占坑










另外你这个没把上下文详细情况(代码)贴清楚,应该是没人答(li)的(逃

不负责任猜想:如果你那个什么鬼 DbConfig.properties

是 new File(" DbConfig.properties").getAbsolutePath()这种形式的话

且 user.dir = E:\javaEE文件\MyProject_BookShopAdmin\src\

那这个结果就是正确的,如果要切换到另一个 ,就可以

1. 改 user.dir

2.直接硬编码路径

3.别用eclipse

4.别用 Java

(Boom)

为什么?