Java读取工程里的文件

Java读取工程里的文件

我们会经常遇到这样的问题,工程里有一个文件,Java程序要读取这个文件,不采用绝对路径的方法,而使用相对路径来读取文件。以后迁移到其他机器上就不会出现读取文件失败的问题了。以下就介绍java如何读取相对路径的文件。

1.java project环境,使用java.io用相对路径读取文件的例子:
 *目录结构:
  MyProject
    |___src
  |___com.etrip.SamplesReader.java
    |___resources
  |___train.txt,列车时刻表.xls
 *SamplesReader.java:
  String filepath="resource/train.txt";//*注意:相对路径的起始处无斜杠"/"
  File file=new File(filepath);

  *我们留意filepath的内容,java.io默认定位到当前用户目录("user.dir")下,即:工程根目录"d:\workspace\MyProject"下,
  因此,此时的相对路径(以user.dir为基路径的路径)为"resources/train.txt"。
  这样,JVM就可以根据"user.dir"与"resource/train.txt"得到完整的路径(即绝对路径)"d:\workspace\MyProject\resources\train.txt",从来找到train.txt文件。

2.javaEE环境,使用Classloader用相对路径读取xml的例子
  java使用相对路径读取xml文件:

  一、xml文件一般的存放位置有三个:
  a)放在WEB-INF下;
  b)xml文件放在/WEB-INF/classes目录下或classpath的jar包中;
  c)放在与解析它的java类同一个包中,不一定是classpath;

  二、相对应的两种使用相对路径的读取方法:
  方法一:将xml文件放在WEB-INF目录下,
  程序代码:
  InputStream is=getServletContext().getResourceAsStream("/WEB-INF/*.xml");

  方法二:将xml文件放在/WEB-INF/classes目录下或classpath的jar包中,则可以使用ClassLoader的静态方法getSystemResourceAsStream(String s)读取;
  程序代码:
  String s_xmlpath="com/etrip/web/ext/xml/hotspot.xml";
  InputStream in=ClassLoader.getSystemResourceAsStream(s_xmlpath);

  方法三:xml在随意某个包路径下:
  String s_xmlpath="com/etrip/web/ext/xml/hotspot.xml";
  ClassLoader classLoader=Main.class.getClassLoader();
  InputStream in=classLoader.getResourceAsStream(s_xmlpath);

  必须通过ClassLoader来执行getResourceAsStream()方法。获取ClassLoader有两种方式:
  InputStream in = Main.class.getClassLoader().getResourceAsStream(xmlfilename);
  InputStream in = Main.this.getClass().getClassLoader().getResourceAsStream(xmlfilename);

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值