
比如我们有以下目录
|–project
|–src
|–java application
|–Testjava
|–file1txt
|–file2txt
|–build
|–java application
|–Testclass
|–file3txt
|–file4txt
在上面的目录中,有一个src目录,这是JAVA源文件的目录,有一个build目录,这是JAVA编译后文件(class文件等)的存放目录,那么,我们在Test类中应该如何分别获得 file1txt file2txt file3txt file4txt这四个文件呢看
首先讲file3txt与file4txt
file3txt:
方法一:File file3 = new File(TestclassgetResource(逗file3txt地)getFile());
方法二:File file3 = new File(TestclassgetResource(逗/javaapplication/file3txt地)getFile());
方法三:File file3 = new File(TestclassgetClassLoader()getResource(逗javaapplication/file3txt地)getFile());
file4txt:
方法一:File file4 = new File(TestclassgetResource(逗/file4txt地)getFile());
方法二:File file4 = new File(TestclassgetClassLoader()getResource(逗file4txt地)getFile());
很好,我们可以有多种方法选择,但是file1与file2文件呢看如何获得看
答案是,你只能写上它们的绝对路径,不能像file3与file4一样用classgetResource()这种方法获得,它们的获取方法如下
假如整个project目录放在c:/下,那么file1与file2的获取方法分别为
file1txt
方法一:File file1 = new File(逗c:/project/src/javaapplication/file1txt地);
方法二:。。。没有
file2txt
方法一:File file2 = new File(逗c:/project/src/file2txt地);
方法二:。。。也没有
总结一下,就是你想获得文件,你得从最终生成的class文件为着手点,不要以java文件的路径为出发点,因为真正使用的就是class,不会拿个java文件就使用,因为java是编译型语言嘛
至于getResouce()方法的参数,你以class为出发点,再结合相对路径的概念,就可以准确地定位资源文件了,至于它的根目录嘛,你用不同的IDE build出来是不同的位置下的,不过都是以顶层package作为根目录,比如在Web应用中,有一个WEB-INF的目录,WEB-INF目录里面除了webxml文件外,还有一个classes目录,没错了,它就是你这个WEB应用的package的顶层目录,也是所有class的根目录逗/地,假如clasaes目录下面有一个filetxt文件,它的相对路径就是地/filetxt地,如果相对路径不是以地/地开头,那么它就是相对于class的路径。。
还有一个getResourceAsStream()方法,参数是与getResouce()方法是一样的,它相当于你用getResource()取得File文件后,再new InputStream(file)一样的结果。
解决myeclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题。有时候是src/main/resources下面的,有时候是src/main/java下面的。把没有编译的文件,先点击:Excluded,然后再点击:Remove,便可。 查看更多答案>>
servlet里面通过String basePath=sessiongetServletContext()getRealPath("/");获取webRoot目录真实路径。
比如d:\tomcat 6\webapps\项目名
webRoot下面的resources目录通过File path = new File(basePath, "resources");获取
其它同理
如果是jsp的话,获取resources目录直接通过“<%=requestgetContextPath()%>/resources”获取
Ps:
Vs只能直接识别和文本文件,其它格式的文件都是保存到byte数组里面的
private void btn_read_Click(object sender, EventArgs e)
{
//测试文件txt
string txt=PropertiesResources测试文件;
rtb_txtText = txt;
}
private void btn_Copy_Click(object sender, EventArgs e)
{
//测试xlsx
byte[]buff= PropertiesResources测试;
FileWriteAllBytes("D:\\测试xlsx", buff);
}
其它文件的处理方式同xlsx类似
不过一般情况像数据库那些文件一般是要包含在项目中,设置编译时复制到输出目录即可直接在程序里面使用相对路径进行访问
以上就是关于resources.getresourceasreader方法读取什么样的文件全部的内容,包括:resources.getresourceasreader方法读取什么样的文件、maven的src/test/resources中的配置文件怎样读取、java web项目 相对路径怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)