当前目录
File file1 = new File(".");
file1.list();

解决方案 »

  1.   

    程序运行时的当前路径
    File file1 = new File(".");
    file1.list();
      

  2.   

    两种方法:
    Properties properties = System.getProperties();
    System.out.println(properties.getProperty("user.dir"));File file=new File(".");
    System.out.println(file.getAbsolutePath());
      

  3.   

    以上各位的方法都解决不了楼主的问题。问楼主两个问题:
    1.t2.ini文件的路径不是确定的?
    2.t1.class是各个路径下都可能被执行?
      

  4.   

    如果上面两个问题都回答:是
    可以这样解决,
    把t2.ini放到系统的classpath所包含的路径内,那么可以使用读取系统流的方法找到配置文件。
      

  5.   

    URL l = ClassLoader.getSystemResource("t1.class");
    String strPath = l.getPath();
      

  6.   

    答 feiyuegaoshan(飞跃) 的两个问题
    1.t2.ini文件的路径不是确定的?(是的,对于目录j1可以是任意的位置及名称)
    2.t1.class是各个路径下都可能被执行?(是的,t1.class在任意位置下都可以执行。)相问一下properties.getProperty("user.dir")获取的是什么目录?是t1.class所在的目录还是运行t1.class的目录(即是输入java命令的目录如:c:\abc>java t1.class)
      

  7.   

    对于 jiaojian77(长夜漫漫) 兄的方法如果存在多个t1.class如何确定哪一个才是我所需要的t1.class(如:c:\j1下有一个t1.class,d:\j2下有一个t1.class,两个目录我都设置在classpath变量中,只是它们分属不同的包)
      

  8.   

    “properties.getProperty("user.dir")获取的是什么目录?”
    当前class正在被执行的目录。
    可以直接写“System.getProperty("user.dir");只要把t2.ini放到classpath路径内,t1.class就可以在任意位置访问,能满足你的需求吗?
      

  9.   

    这样子不行,我想要的是在java程序中获取当前程序所在的目录
    因为t2.ini可能有名的文件
    难道真的不行吗?
    就像VB一样,他有一个函数可以获取应用程序的目录而不是运行目录。
      

  10.   

    用System.getProperty("user.dir")是获得当前的目录,不一定是 tl.class所在的目录。
    写在classpath里比较保险,t1.class可以找到t2.ini。
      

  11.   

    关于定位resource file真的太有的讲头了。但是讲到底就两种,从class loader根目录开始找,和从project根目录开始找。从class loader目录下取resource是用ClassLoader getResource的方法;从project根目录下取resource是用java.io里面based on File的方法。java.io里面based on File的方法是指java.io里面所有关于Fiel的类(FileReader,FileWriter,FileInputStream,FileOutputStream)都是最终用File来定位文件的。
    我们从Jbuilder开始讲起,用jbuilder开启一个project,会有一个project根目录(例如C:\projects\test\),和一个这个根目录下的classes目录(例如C:\projects\test\classes\)。对于test目录下的文件sample.jpg,我们用new File("sample.jpg")。对于classes目录下的文件,首先Jbuilder必须设置为copy改类文件,然后用Thread.getCurrentTread().getContextLoader().getResource("sample.jpg")来得到它。如果不是文本,一般用getResourceAsStream更直接。
    引伸的问题:
    1.如何取project所在硬盘根目录文件(“c:\sample.jpg”)?
    new File("/sample.jpg");
    2.如何取根目录下面的子目录下的文件(“test\classes\com\toyota\meta\sample.jpg”)?
    getResourceAsStream("com/toyota/meta/sample.jpg");
    当用java.io.File定位文件类同。
    3.如何取调用的jar里面的文件?
    同ClassLoader getResource一样没有区别。
    4.project打成包后,resource也在包里有没有问题?
    没有问题,用法一样。当然只是用class loader的方法。
    5.从jar里面拿外面的文件怎么拿?
    同样拿,一点区别都没有。code不变。
    6.上面讲了getResourceAsStream("com/toyota/meta/sample.jpg"),有没有简单的写法?
    有,如果你有一个Class在相同目录。用XXXClass.class.getResourceAsStream("sample.jpg");
    7.用batch文件启动jar里的程序时,所谓的project根目录在哪里?
    在这个batch文件所在目录。
    8.用tomcat or resin,所谓的project根目录在哪里?
    在tomcat or resin的根目录。
    9.Log4J appends出来的log文件就是按造File的load法生成的。Velocity找template file也是这样,但是你可以配置Velocity让它也能从jar里面找template文件。
      

  12.   

    10.java.util.ResourceBundle用的是ClassLoader的方法,所以properties文件应该在classes目录下或者在jar里面。
    11.如果properties文件是相对project目录,也就是说一定要用File的方式取properties文件怎么办?
    这是个困惑我的问题,我一直用FileInputStream在传给Property class来解决,但是,这样就没有ResourceBundle的另一个功能,internationalization.在我的一个project里,我可以用ResourceBundle拿到与batch文件在同一目录下的properties文件,但是后来又不work了。郁闷后,我认为不同的JVM有不同的效果。就想在用ClassLoader getResource("xxxxx")时,xxxxx用'/'开头和没有'/'开头在不同JVM下效果不同。
      

  13.   

    就是jiaojian77(长夜漫漫)的方法了,不认为从系统中取路径是好的方式
      

  14.   

    有没有用t1.class.getResource("t2.ini")?问题解决了没有?可以结贴了没有?