java web中读取文件操作的三个方法

本文详细解释了如何在Web应用中通过不同路径加载配置文件,并提供了三种加载方法,包括使用getServletContext()方法、获取绝对路径的传统读取方式和通过类加载器读取资源文件。此外,还讨论了在网页更改后更新配置文件的解决方案。

 假设存在一个 xxx.properties 文件

首先看该文件放置的位置

a.如果文件放在src目录下面,这文件的路径名就写成:“WEB-INF/classes/资源文件名”

b.如果文件放在src目录下面的某个包中,则文件的路径名写成:“WEB-INF/classes/ 包路径/资源文件名”

c.如果文件放在webRoot文件下,则文件的路径名写成:“/资源文件名”  

方法一:用getServletContext()方法来实现

InputStream in = this.getServletContext().getResourceAsStream("WEB-INF/classes/xxx.properties");

//获取资源文件的输入流

Properties pro = new Properties();

prop.load(in);//加载xxx.properties文件

prop.getProperties("属性名");//获取对应值

 方法二:获取绝对路径,用传统读取文件的方式读取文件

String path = this.getServletContext().getRealPath("文件路径名");

FileInputStream in=new FileInputStream(path);

Properties pro = new Properties();

prop.load(in);//加载xxx.properties文件

prop.getProperties("属性名");//获取对应值


方法三:

如果读取资源文件的程序不是servlet的话,就只能通过类加载器读取

定义一个UserDao类在servlet doGet()方法中调用UserDao 中的meh()方法

public class UserDao(){

    public void meth(){

     InputStream in = UserDao.class.getClassLoader().getResourseAsStream("资源文件名"); //注意在此处的资源文件名就不需要加上“WEB-INF......”===

    Properties pro = new Properties();

    prop.load(in);//加载xxx.properties文件

    prop.getProperties("属性名");//获取对应值

}

}


此方法读取文件后,如打开网页过后再改动资源文件,就不能读取到更新过后的内容,对此有以下解决方法

通过类装载的方法获取资源文件的绝对位置,在用传统的文件读取方法读取文件,这样就能获取到更新过后的文件

String path = UserDao.class.getClassLoader().getSource("资源文件名").getPath();

FileInputStream in=new FileInputStream(path);

Properties pro = new Properties();

prop.load(in);//加载xxx.properties文件

prop.getProperties("属性名");//获取对应值

getSource("资源名")得到该文件的绝对路径,返回时一个URL类型










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值