InputStreamReader 的构造函数提供了一个参数,用于指定通过什么编码将读取到的字节流转换成字符。下面是一个例子:
- /**
- * 读取指定的文本文件,并返回内容
- *
- * @param path 文件路径
- * @param charset 文件编码
- *
- * @return 文件内容
- *
- * @throws IOException 如果文件不存在、打开失败或读取失败
- */
- private static String readFile(String path, String charset) throws IOException {
- String content = "";
- BufferedReader reader = null;
- try {
- reader = new BufferedReader(new InputStreamReader(new FileInputStream(path), charset));
- String line;
- while ((line = reader.readLine()) != null) {
- content += line + "/n";
- }
- } finally {
- if (reader != null) {
- try {
- reader.close();
- } catch (IOException e) {
- // 关闭 Reader 出现的异常一般不需要处理。
- }
- }
- }
- return content;
- }
PS : 这只是一个 InputStreamReader 的用法示例。真的碰到大文件,怎么可能都读到内存里面来?StringBuffer 都免了。