java读取文件的方式_java中读取文件的方式

对字符型的处理,二进制的暂时不考虑。

1.readFile方法,主要采用FileReader来读取文件,不能指定编码

2.readFileByInputStream方法,采用InputStreamReader来读取文件,可以指定编码

3.readFileByBufferedReader方法,采用BufferedReader来读取文件,不可以指定编码

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileReader;

import java.io.InputStreamReader;

/**

* 测试读取文件

*

* @author rey2008

*

*/

public class TestReadFile {

/**

* @param args

* @throws Exception

*/

public static void main(String[] args) throws Exception {

String sFilePath = "D://test//test_read.txt";

readFileByBufferedReader(sFilePath);

}

/**

* 以字符读取文件,采取策略 File->FileReader->char[]

* FileReader的读取过程:FileReader->FileInputStream(不能指定编码,

* 指定编码是在InputStreamReader中指定的,FileReader正好跳过了指定编码的一步)

*

* @param _sFilePath

*/

private static void readFile(String _sFilePath) throws Exception {

File aFile = new File(_sFilePath);

if (!aFile.exists()) {

throw new Exception("路径[" + _sFilePath + "]对应的文件不存在!");

}

FileReader aFileReader = null;

StringBuffer sbContent = new StringBuffer();

try {

// 定义缓冲区

char[] fileBuffer = new char[1024];

aFileReader = new FileReader(aFile);

while (aFileReader.read(fileBuffer) != -1) {

sbContent.append(fileBuffer);

// 清空上次数据

fileBuffer = new char[1024];

}

} catch (Exception ex) {

if (aFileReader != null) {

aFileReader.close();

}

ex.printStackTrace();

}

// 打印文件内容

System.out.println("sbContent==" + sbContent);

}

/**

* 以字符读取文件,File->fileInputStream->InputStreamReader->chars

* 与直接用FileReader来读取不同的是,是可以指定流的编码

*

* @param _sFilePath

* @throws Exception

*/

private static void readFileByInputStream(String _sFilePath)

throws Exception {

File aFile = new File(_sFilePath);

if (!aFile.exists()) {

throw new Exception("路径[" + _sFilePath + "]对应的文件不存在!");

}

// 声明变量

FileInputStream aFileInputStream = null;

InputStreamReader aInputStreamReader = null;

StringBuffer sbContent = new StringBuffer();

try {

// FileInputStream

aFileInputStream = new FileInputStream(aFile);

// InputStreamReader

aInputStreamReader = new InputStreamReader(aFileInputStream,

"UTF-8");

// 定义缓冲区

char[] fileBuffer = new char[1024];

while (aInputStreamReader.read(fileBuffer) != -1) {

sbContent.append(fileBuffer);

// 清空上次数据

fileBuffer = new char[1024];

}

} catch (Exception ex) {

if (aFileInputStream != null) {

aFileInputStream.close();

}

if (aInputStreamReader != null) {

aInputStreamReader.close();

}

ex.printStackTrace();

}

// 打印文件内容

System.out.println("sbContent==" + sbContent);

}

/**

* 以行读取文件,通过BufferedReader来做,一次读取一行

* file->fileReader->BufferedReader(无法指定编码)

*

* @param _sFilePath

* @throws Exception

*/

private static void readFileByBufferedReader(String _sFilePath)

throws Exception {

File aFile = new File(_sFilePath);

if (!aFile.exists()) {

throw new Exception("路径[" + _sFilePath + "]对应的文件不存在!");

}

// 定义缓冲区

BufferedReader aBufferedReader = null;

StringBuffer sbContent = new StringBuffer();

try {

aBufferedReader = new BufferedReader(new FileReader(aFile));

String sOneLine = null;

while ((sOneLine = aBufferedReader.readLine()) != null) {

sbContent.append(sOneLine);

}

} catch (Exception ex) {

if (aBufferedReader != null) {

aBufferedReader.close();

}

ex.printStackTrace();

}

// 打印文件内容

System.out.println("sbContent==" + sbContent);

}

// 读取二进制文件,采用InputStreamReader读取到byte[]缓冲区即可

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值