java中使用相对路径读取文件的方法:1、使用文件【file file = new file(“src/test.txt”)】方法;2、使用类的相对路径;3、使用当前线程的类加载器;4、读取web工程下的文件。
【相关学习推荐:java基础教程】
java中使用相对路径读取文件的方法:
一、简单粗暴的 file file = new file(“src/test.txt”);
@test / * 这种方法 “” 空代表的是 这个java项目 testsometechnology 由于实际项目在打包后没有src目录 所以这种方法不常用 */ public void testmethod1() throws ioexception{ file file = new file("src/test.txt"); bufferedreader br = new bufferedreader(new filereader(file)); string len = null; while ((len=br.readline())!=null){ system.out.println(len); } }二、使用类的相对路径
testrelativepath.class.getresource(“/test.txt”).getfile()
@test / * 使用类的相对路径 * 这种方法 “/” 代表的是bin。 src文件夹和resources 文件夹下的的东西都会被加载到bin下面 因为这两个文件被配置为了source */ public void testmethod2() throws ioexception{ file file = new file(testrelativepath.class.getresource("/test.txt").getfile()); bufferedreader br = new bufferedreader(new filereader(file)); string len = null; while ((len=br.readline())!=null){ system.out.println(len); } }三、使用当前线程的类加载器
thread.currentthread().getcontextclassloader().getresource(“test.txt”).getfile()
@test / * 这种是通过当前线程的类加载器 * 这种方法 “ ” 空代表的是bin 。 于是就直接填写test,文件夹下的的东西都会被加载到bin下面,因为这两个文件被配置为了source */ public void testmethod3() throws ioexception{ file file = new file(thread.currentthread().getcontextclassloader().getresource("test.txt").getfile()); bufferedreader br = new bufferedreader(new filereader(file)); string len = null; if ((len=br.readline())!=null){ system.out.println(len); } }四、读取web工程下的文件 使用getrealpath()读取
目录如下 :
读取 index.jsp
@webservlet(name = "testservlet",urlpatterns = "/testservlet")public class testservlet extends httpservlet { protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {doget(request,response); } / * web工程的根目录是 webroot, 使用 “/” 代表webroot webroot下面有index.jsp文件 */ protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { file file = new file(getservletcontext().getrealpath("/index.jsp")); bufferedreader br = new bufferedreader(new filereader(file)); string len = null; while ((len=br.readline())!=null){ system.out.println(len); } }}读取 test.txt文件
不过如果想读取test.txt 的话 我们可用用上面的方式
file file = new file(thread.currentthread().getcontextclassloader().getresource("test.txt").getfile());也可以使用 getrealpath()
不过由于是以 webroot为根目录 我们需要从classes里面读:idea的classes等价于esclipse的classpath 。classes说明:
代码:
file file = new file(getservletcontext().getrealpath("/web-inf/classes/test.txt"));getresourceasstream()方法详解
getresourceasstream()用法与getresouce()方法一样的,用getresource()取得file文件后,再new fileinputstream(file) 与 getresourceasstream() 的效果一样。。
两个代码效果一样
inputstream inputstream1 = new fileinputstream(new file(thread.currentthread().getcontextclassloader().getresource("test.txt").getfile()));inputstream inputstream2 = thread.currentthread().getcontextclassloader().getresourceasstream("test.txt");相关推荐:编程视频课程