Java好像没有当前应用程序名称的概念?(就是取不到当前可执行文件的路径)
象c语言,main函数的args[0],pascal的paramstr(0)。那么,如果我在有main函数的class文件所在目录部署了一个配置文件,我怎样才能取得这个配置文件的绝对路径?这样说可能不太清楚,我举个相同问题的pascal代码例子:function get_conf_full_file_name(): string;
var
  exe, path: String;
begin
  exe := ParamStr(0);
  path := ExtractFilePath(exe);
  Result := path + 'conf.xml';
end;在java里面,习惯上是怎样处理这个问题的?新手上路,请多关照!谢谢!

解决方案 »

  1.   

    System.out.println(System.getProperty("user.dir"));
      

  2.   

    不行阿,那样只是输出java执行时的当前目录,不是class所在的目录
      

  3.   

    System.out.println(System.getProperty("java.class.path"));
      

  4.   

    楼上只是返回了classpath,还是不行,因为classpath可能包含多个路径可能我没说清楚,比方说,我的含有void main()的my_class.class安装在c:\my_program\bin不管在哪里运行my_class.class,当前目录为何,我想始终返回c:\my_program\bin另外,问题2:执行路径规则化是调用那个函数?String x(String path, String path2);x("c:\my_program\data", "..\bin");希望返回"c:\my_program\bin"
    问题3:确保路径字符串以路径分隔符结尾是调用那个函数?String y(String path);y("c:\my_program\bin");
    y("c:\my_program\bin\");希望返回"c:\my_program\bin\"
      

  5.   

    好像都要自己写函数来实现这个功能,下面做做参考....问题一:
    用一个外部配置文件好了,比如Config.ini,在当前目录下
    安装的时候写进去,运行的时候读就好了...问题二:
    这个估计要去写函数了,先用
    String[] path.split(File.separator)取到所有的目录层,然后去分析后面那个path2的结构,执行相应操作
    (估计相当于写一个完整的DOS目录命令了)问题三:
    去判断path的最后一个字符吧
    if(path.charAt(str.length()-1)==File.separatorChar) {}
      

  6.   

    谢谢,还有不同意见吗?说真的,倘若如楼上所言,我觉得有点意外,对java有那么一点点失望,除了第一个问题可能涉及java本身的特性以外,另外两个问题都是相对来说是比较基本的问题,java发展这么多年了,居然连这两个常用函数都不是标准库里现成提供的,还有成千上万的程序员在重复编写同一个函数,,,,,,
      

  7.   

    函数不在多......功能太多.....带来的就是效率变慢.....JAVA已经够大了.....不过建议楼主去看看JAVA的扩展包...特别是Apache Jakarta的...里面有很多好用的函数,估计就有你需要的那种....
      

  8.   

    >建议楼主去看看JAVA的扩展包...特别是Apache   Jakarta的.谢谢,我去看看,>函数不在多......功能太多.....带来的就是效率变慢.....JAVA已经够大了..... 不同意,所谓常用函数就是经常要用到的函数,标准库不提供,我们还不是要自己写,还不是一样要占用内存,
    还不是一样要占用cpu时间?只能说,更严格的分类功能类库,做成不同的包,根据不同的需要来加载。况且,每个人
    都有自己的实现,这不但浪费宝贵的人力,还会在一定程度上造成java移植性上的问题