java读取文件的万能解决方案

对于读取文件可以分为两个步骤:

1. 找到该文件的绝对路径

2. 根据获取到的文件绝对路径通过File来创建文件对象,然后根据相应的api进行读取文件中的内容

在这两步中找到该文件的绝对路径最为重要,所以我在下面的讲解中主要讲解如果获取文件的绝对路径,

对于获取到文件的绝对路径以后再文件中的具体内容我会在最后案例中给出


同时由于我们在使用meclipse进行开发的时候可以创建两种工程java project和 j2ee (web项目),下面介绍这两类工程下如何获取文件的绝对路径

1. java project

在该工程下文件存放的位置可分为:


  (1):类路径下(classpath)读取文件绝对路径的方式:

       <1>: this.getClass().getResource("/zhang/TestGetFile.class");
    <2>:    this.getClass().getClassLoader().getResource("zhang/TestGetFile.class");

           分析:

上面的两种方式我们都可以进行获取到类路径下文件的绝对路径

               我们通过:

System.out.println(this.getClass().getResource("/")); // 项目所在位置/工程名/bin

System.out.println(his.getClass().getClassLoader().getResource(""));  //  项目所在位置/工程名/bin

                我们发现上面的两个输出的是一个目录都是当前类的跟目录,但是我们使用的不同的方法,

一个是利用Class的getResource方法,一个是利用类加载器的getResource方法,通过查看api发现:

查找带有给定名称的资源。查找与给定类相关的资源的规则是通过定义类的 class loader 实现的。此方法委托给此对象的类加载器。

              这说明Class的getResource方法还是调用的类加载器的方法

同时我们也注意到Class的getResource方法参数传递了一个"/",这是该方法做的处理操作,具体的可以查看api

     (2.) : 工程目录下的文件的绝对路径

//先获取类的根目录

urlPath = this.getClass().getClassLoader().getResource("");

  //找到当前工程所在的目录
String mypath = new File(urlPath.getPath(),"../").getCanonicalPath();

//进行拼接文件的绝对路径

mypath = mypath + "工程目下的文件的具体目录"

2. web工程

在该工程下文件存放的位置可分为:


1.  对于普通的类中获取文件的绝对路径

通过上面的在java project工程下的方法可以获取

2. 在Servlet类文件中获取文件的绝对路径

ServletContext. getResourceAsStream(String path):默认从WebRoot根目录下取资源,Tomcat下path是否以’/‘开头无所谓


下面是一个根据路径进行读取文件中的内容的一个方法:

public String getRemindSubSum(String pathName) {
    File file = new File(pathName);
    StringBuffer sb = new StringBuffer();
    BufferedReader reader;
try {
reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String tempString = null;
   // 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
  sb.append(tempString);
 }
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}  catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
    }

                  


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值