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();

}

时间: 2024-11-09 02:41:04

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

Java读取word文档解决方案

java读取word文档时,虽然网上介绍了很多插件poi.java2Word.jacob.itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用):java2Word.jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄:itxt好像写很方便但是我查了好久资料没有见到过关于读的好办法.经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,

Java读取文件的注意点

关于Java读取UTF-8和UTF-8 BOM文件的问题记录在此,仅给自己提个醒. 今天从文本文件中读取数据存储到数据库中,操作完之后检验数据库发现有一些记录出现差错,几经排查(╮(╯Д╰)╭,自己忘了把异常输出,费了不少时间.),发现都是每个文本文件下的第一行出现差错,终于找到原因了,是文件的编码惹的祸.存储数据的文本文件编码类型为UTF-8 BOM,文件编码类型该了一下,再一检验,问题解决. 处理方法可以参考http://www.2cto.com/kf/201108/98509.html J

Java读取文件夹大小的6种方法及代码

这篇文章介绍了JAVA读取文件夹大小的几种方法实例,有需要的朋友可以参考一下. (一)单线程递归方式 package com.taobao.test; import java.io.File; public class TotalFileSizeSequential { public static String fileName = "C:\\Documents and Settings\\Administrator\\桌面\\monkeytalk"; // 递归方式 计算文件的大小

[Java]读取文件方法大全(转)

[Java]读取文件方法大全 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile {    /**     * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件.     */    public static void readFileByBytes(String fileName) {        File file = new File(fileName);        Input

【转】Java读取文件方法大全

本文转自:http://www.cnblogs.com/lovebread/archive/2009/11/23/1609122.html#undefined 目录: 按字节读取文件内容 按字符读取文件内容 按行读取文件内容 随机读取文件内容 将内容追加到文件尾部 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileByBytes(String fil

Java读取文件,将字符串转化成日期类型,将日期类型进行加减

最近总用Java读取文件,发现了一种我个人觉得比较好的方法,现在分享给大家 public static void main(String[] args) throws Exception { FileInputStream f = new FileInputStream("文件路径"); InputStreamReader fileInputStream = new InputStreamReader(f); BufferedReader br = new BufferedReader

java读取文件最后N行

原文:java读取文件最后N行 源代码下载地址:http://www.zuidaima.com/share/1550463669226496.htm 指定行数,可以获取到从这行到文件尾的所有行,分享自大熊. 源文件: 读取最后10行结果 import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.List

Java读取文件 利用MappedByteBuffer进行缓冲

Java读取文件 利用MappedByteBuffer进行缓冲,这样可以保证边读取大文件,边进行处理 package sean; import java.io.ByteArrayInputStream; import java.io.File; import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.util.Scann

Java读取文件的问题

java读取文件的两种方法:java.io和java.lang.ClassLoader (我就知道这两种.....) // java.io: File file = new File("..."); FileInputStream fis = new FileInputStream("..."); FileReader fr = new FileReader("..."); //ClassLoader: ClassLoader loader =