package
com.jasonhuang.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
/** */ /**
* 利用字符流和字节流两种方式来读取文本文件的内容
* @author Jason Huang
*
*/
public class TestFileReader ... {
/** *//**
* Log4j日志
*/
private static Logger logger = Logger.getLogger(TestFileReader.class);
/** *//**
* 准备读取的文件路径
*/
private static String fileName = "notes.txt";
/** *//**
* 准备读取的文件编码
*/
private static String encoding = "UTF-8";
/** *//**
* 通过字节流读取文本文件,然后编码为正确字符,并输出
*/
private void readByStream() ...{
FileInputStream input = null;
try ...{
// 获得准备读取的文件
File file = new File(fileName);
// 创建字节输入流
input = new FileInputStream(file);
// 建立缓冲区
int length = 1024;
byte[] buffer = new byte[length];
int len = 0;
String str = null;
// 循环读取
while ((len = input.read(buffer)) != -1) ...{
// 将获得的字节数组根据编码转换成字符串
str = new String(buffer, 0, len, encoding);
// 将获得的内容(字符串)打印
System.out.print(str);
}
} catch (Exception e) ...{
logger.error(e.getMessage(), e);
} finally ...{
// 依次关闭各资源
if (input != null) ...{
try ...{
input.close();
} catch (IOException e) ...{
logger.error(e.getMessage(), e);
}
input = null;
}
}
}
/** *//**
* 通过字符流读取文本文件,并输出
*/
private void readByReader() ...{
InputStreamReader reader = null;
try ...{
// 获得准备读取的文件
File file = new File(fileName);
// 创建字节输入流
FileInputStream input = new FileInputStream(file);
// 根据编码封装为字符输入流
reader = new InputStreamReader(input, encoding);
// 建立缓冲区
int length = 1024;
char[] buffer = new char[length];
int len = 0;
String str = null;
// 循环读取
while ((len = reader.read(buffer)) != -1) ...{
// 将获得的字符数组转换成字符串
str = new String(buffer, 0, len);
// 将获得的内容(字符串)打印
System.out.print(str);
}
} catch (Exception e) ...{
logger.error(e.getMessage(), e);
} finally ...{
// 依次关闭各资源
if (reader != null) ...{
try ...{
reader.close();
} catch (IOException e) ...{
logger.error(e.getMessage(), e);
}
reader = null;
}
}
}
/** *//**
* @param args
*/
public static void main(String[] args) ...{
// 设置日志记录级别为INFO
logger.setLevel(Level.INFO);
TestFileReader test = new TestFileReader();
logger.info("开始通过字节流读取文件!");
test.readByStream();
logger.info("通过字符流读取文件!");
test.readByReader();
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
/** */ /**
* 利用字符流和字节流两种方式来读取文本文件的内容
* @author Jason Huang
*
*/
public class TestFileReader ... {
/** *//**
* Log4j日志
*/
private static Logger logger = Logger.getLogger(TestFileReader.class);
/** *//**
* 准备读取的文件路径
*/
private static String fileName = "notes.txt";
/** *//**
* 准备读取的文件编码
*/
private static String encoding = "UTF-8";
/** *//**
* 通过字节流读取文本文件,然后编码为正确字符,并输出
*/
private void readByStream() ...{
FileInputStream input = null;
try ...{
// 获得准备读取的文件
File file = new File(fileName);
// 创建字节输入流
input = new FileInputStream(file);
// 建立缓冲区
int length = 1024;
byte[] buffer = new byte[length];
int len = 0;
String str = null;
// 循环读取
while ((len = input.read(buffer)) != -1) ...{
// 将获得的字节数组根据编码转换成字符串
str = new String(buffer, 0, len, encoding);
// 将获得的内容(字符串)打印
System.out.print(str);
}
} catch (Exception e) ...{
logger.error(e.getMessage(), e);
} finally ...{
// 依次关闭各资源
if (input != null) ...{
try ...{
input.close();
} catch (IOException e) ...{
logger.error(e.getMessage(), e);
}
input = null;
}
}
}
/** *//**
* 通过字符流读取文本文件,并输出
*/
private void readByReader() ...{
InputStreamReader reader = null;
try ...{
// 获得准备读取的文件
File file = new File(fileName);
// 创建字节输入流
FileInputStream input = new FileInputStream(file);
// 根据编码封装为字符输入流
reader = new InputStreamReader(input, encoding);
// 建立缓冲区
int length = 1024;
char[] buffer = new char[length];
int len = 0;
String str = null;
// 循环读取
while ((len = reader.read(buffer)) != -1) ...{
// 将获得的字符数组转换成字符串
str = new String(buffer, 0, len);
// 将获得的内容(字符串)打印
System.out.print(str);
}
} catch (Exception e) ...{
logger.error(e.getMessage(), e);
} finally ...{
// 依次关闭各资源
if (reader != null) ...{
try ...{
reader.close();
} catch (IOException e) ...{
logger.error(e.getMessage(), e);
}
reader = null;
}
}
}
/** *//**
* @param args
*/
public static void main(String[] args) ...{
// 设置日志记录级别为INFO
logger.setLevel(Level.INFO);
TestFileReader test = new TestFileReader();
logger.info("开始通过字节流读取文件!");
test.readByStream();
logger.info("通过字符流读取文件!");
test.readByReader();
}
}