myeclipse中在src里建一个file文件,然后通过工程的绝对路径引用即可。
一相对路径的获得
还是说明:相对路径(即不写明时到底同事谁)休眠通过以下方式获得(其实是一般的java项目web项目)
StringrelativePath=System.getProperty("user.dir");
上述相对路径中,java项目中的文件是相对于项目的根目录
< p>web项目中的文件路径视不同的web服务器不同而不同(tomcat相对于tomcat安装目录\bin)二类加载目录的获取(即当运行时该类时获取 其装载目录)
1.1)通用的方法一(必须是一般的java项目或者web项目,先定位到能看到包路径的第一级目录)
InputStream is=TestAction.class.getClassLoader().getResourceAsStream("test.txt");
(test.txt文件的路径为项目名\src\test.txt;类TestAction所在包的第一个 级目录位于src目录下)
上式中将TestAction,test.txt替换成对应的相应的类名和文件名即可
1.2)通用方法二(此方法 和1.1中的方法类似,不同的是此方法必须以'/'开头,
InputStream is=Test1.class.getResourceAsStream("/test.txt");
(test.txt文件的路径为名\src\test.txt,类Test1项目包的第一级目录位于src目录下)
三web项目根目录的获取(发布之后)< /p>
1 从 servlet 出发
可创建一个 servlet 在其 init 方法中写入如下语句
ServletContext s1=this.getServletContext();
String temp=s1.getRealPath("/"); (key)
结果形如:D:\Tool\Tomcat-6.0\webapps\002_ext\ (002_ext 为项目名称)< /p>
如果是调用了s1.getRealPath("")则输出D:\Tool\Tomcat-6.0\webapps\002_ext(少了一个"\")
2从httpServletRequest出发
String cp11111=request.getSession().getServletContext().getRealPath("/");
结果形如:D:\工具\Tomcat-6.0\webapps\002_ext \
四个类路径的获取(在Eclipse中为获取src或者classes目录的路径)
方法一 Thread.currentThread().getContextClassLoader().getResource("")。 getPath()
例如:String t=Thread.currentThread().getContextClassLoader().getResource("").getPath();
System.out.println("t ---"+t);
输出:t---/E:/order/002_ext/WebRoot/WEB-INF/classes/
方法二 Jd
omParse.class.getClassLoader().getResource("").getPath() (JdomParse为src某包中的类,下同)
eg:String p1=JdomParse.class.getClassLoader() .getResource("").getPath();
System.out.println("JdomParse.class.getClassLoader().getResource--"+p1);
输出: JdomParse.class.getClassLoader().getResource--/E:/order/002_ext/WebRoot/WEB-INF/classes/
另外,如果想把文件放在包中,则可以通过 以下方式获取到文件(先定位到该包的最后一级目录)
eg String p2=JdomParse.class.getResource("").getPath();
系统 .out.println("JdomParse.class.getResource---"+p2);
输出:JdomParse.class.getResource---/E:/order/002_ext/WebRoot/WEB-INF/ classes/jdom/ (JdomParse为src目录下jdom包中的类)
四个属性文件的读取:
方法一
InputStream in = lnew BufferedInputStream( 新的 FileInputStream(名称)); 属性 p = new Properties(); p.load(in);
注意路径的问题,做执行之后就可以调用p.getProperty("name")得到属性的值
方法二
Locale locale = Locale.getDefault();
ResourceBundle localResource = ResourceBundle.getBundle("test/propertiesTest", locale);
字符串值 = localResource.getString( "test");
System.out.println("ResourceBundle: " + value);
工程src目录下propertiesTest.properties(名称后缀必须为properties)文件内容如下 :
测试=你好词