1、下面一段代码的功能是把一个txt文件的内容赋值给字符串
package com.yuzhiyun;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
public class ReadFile {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
System.out.println(readFile( new File("a.txt")));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
static String readFile(File file) throws IOException {
//抽象类输入流
InputStream in = null;
//抽象类
Reader reader = null;
// 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 可以指定缓冲区的大小,或者可使用默认的大小。
BufferedReader bufferedReader = null;
try {
//获取文件输入流
in = new FileInputStream(file);
//InputStreamReader 字节流通向字符流的桥梁
reader = new InputStreamReader(in,"UTF-8");
bufferedReader = new BufferedReader(reader);
String line = null;
StringBuffer result = new StringBuffer();
while((line=bufferedReader.readLine())!=null){
result.append(line);
result.append("\n");
}
return result.toString();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(in!=null)
in.close();
}
return null;
}
}
2、对象适配器的体现
需要注意的是,InputStreamReader是间接持有InputStream的,InputStreamReader作为适配器,搭建了从输入流到字符流的通道。