如何在java程序中获取当前程序所在的目录?高分 当前目录File file1 = new File(".");file1.list(); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 程序运行时的当前路径File file1 = new File(".");file1.list(); 两种方法:Properties properties = System.getProperties();System.out.println(properties.getProperty("user.dir"));File file=new File(".");System.out.println(file.getAbsolutePath()); 以上各位的方法都解决不了楼主的问题。问楼主两个问题:1.t2.ini文件的路径不是确定的?2.t1.class是各个路径下都可能被执行? 如果上面两个问题都回答:是可以这样解决,把t2.ini放到系统的classpath所包含的路径内,那么可以使用读取系统流的方法找到配置文件。 URL l = ClassLoader.getSystemResource("t1.class");String strPath = l.getPath(); 答 feiyuegaoshan(飞跃) 的两个问题1.t2.ini文件的路径不是确定的?(是的,对于目录j1可以是任意的位置及名称)2.t1.class是各个路径下都可能被执行?(是的,t1.class在任意位置下都可以执行。)相问一下properties.getProperty("user.dir")获取的是什么目录?是t1.class所在的目录还是运行t1.class的目录(即是输入java命令的目录如:c:\abc>java t1.class) 对于 jiaojian77(长夜漫漫) 兄的方法如果存在多个t1.class如何确定哪一个才是我所需要的t1.class(如:c:\j1下有一个t1.class,d:\j2下有一个t1.class,两个目录我都设置在classpath变量中,只是它们分属不同的包) “properties.getProperty("user.dir")获取的是什么目录?”当前class正在被执行的目录。可以直接写“System.getProperty("user.dir");只要把t2.ini放到classpath路径内,t1.class就可以在任意位置访问,能满足你的需求吗? 这样子不行,我想要的是在java程序中获取当前程序所在的目录因为t2.ini可能有名的文件难道真的不行吗?就像VB一样,他有一个函数可以获取应用程序的目录而不是运行目录。 用System.getProperty("user.dir")是获得当前的目录,不一定是 tl.class所在的目录。写在classpath里比较保险,t1.class可以找到t2.ini。 关于定位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文件。 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下效果不同。 就是jiaojian77(长夜漫漫)的方法了,不认为从系统中取路径是好的方式 有没有用t1.class.getResource("t2.ini")?问题解决了没有?可以结贴了没有? 什么是关联和依赖,他们的区别 在哪里?? 关于背景色的设置 this.setBackground(Color.black); 这样似乎没效果 环境变量设置问题,小弟我总设不好~ 也是一个关于jTee的展开问题 怎么获取双击打开文件的路径? 怎样获取邮箱中的新邮件数??? 哪里有最新的 API 下载? 如何用命令单步调试,单步跟踪java 程序 请教setXORMode用法 我刚开始学习java,请问先看基础知识呢,还是从一个源程序看起? robocode入门讨论贴------------------0.01 tomcat4。12启动问题及helloworld问题,我郁闷很久拉
File file1 = new File(".");
file1.list();
Properties properties = System.getProperties();
System.out.println(properties.getProperty("user.dir"));File file=new File(".");
System.out.println(file.getAbsolutePath());
1.t2.ini文件的路径不是确定的?
2.t1.class是各个路径下都可能被执行?
可以这样解决,
把t2.ini放到系统的classpath所包含的路径内,那么可以使用读取系统流的方法找到配置文件。
String strPath = l.getPath();
1.t2.ini文件的路径不是确定的?(是的,对于目录j1可以是任意的位置及名称)
2.t1.class是各个路径下都可能被执行?(是的,t1.class在任意位置下都可以执行。)相问一下properties.getProperty("user.dir")获取的是什么目录?是t1.class所在的目录还是运行t1.class的目录(即是输入java命令的目录如:c:\abc>java t1.class)
当前class正在被执行的目录。
可以直接写“System.getProperty("user.dir");只要把t2.ini放到classpath路径内,t1.class就可以在任意位置访问,能满足你的需求吗?
因为t2.ini可能有名的文件
难道真的不行吗?
就像VB一样,他有一个函数可以获取应用程序的目录而不是运行目录。
写在classpath里比较保险,t1.class可以找到t2.ini。
我们从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文件。
11.如果properties文件是相对project目录,也就是说一定要用File的方式取properties文件怎么办?
这是个困惑我的问题,我一直用FileInputStream在传给Property class来解决,但是,这样就没有ResourceBundle的另一个功能,internationalization.在我的一个project里,我可以用ResourceBundle拿到与batch文件在同一目录下的properties文件,但是后来又不work了。郁闷后,我认为不同的JVM有不同的效果。就想在用ClassLoader getResource("xxxxx")时,xxxxx用'/'开头和没有'/'开头在不同JVM下效果不同。