getAbsolutePath 和实际路径不符?
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)