字符输入流Reader(抽象类---基类)常用方法:
int read()
int read(char[] c)
int read(char[] c, int off ,int len)
viod close()
FileReader类是Reader的孙子类:
FileReader(File file)
FileReader(String name)
FileReader读取文件:
引入资源
创建FileReader对象
调用相应reader()读取文件
关闭字符流
* @Description借助字符输入流FileReader读取文件
*/
public class FileReaderDemo {
public static void main(String[] args) {
FileReader fr=null;
try {
//2.创建字符输入流FileReader对象
fr=new FileReader("d:/myDoc/test.txt");
//3.调用FileReader对象的read()方法读取文件
StringBuffer s=new StringBuffer();
char[] ch=new char[1024];
int len=1;
while ((len=fr.read(ch))!=-1){
s.append(ch);
}
System.out.println(s);
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}finally {
//4.关闭字符输入流
try {
fr.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
}
但如果要读的文件里出现中文,那读出的中文容易出现乱码(原因是文件编码格式和程序环境的编码格式不一致),当然我们可以手动设置,那我们如果因为各种原因无法手动修改呢?那我们就需要使用InputStreamReader来修改一下这里的代码
* @Description借助字符输入流FileReader读取文件---解决中文乱码问题
*/
public class FileReaderDemo {
public static void main(String[] args) {
Reader fr=null;
try {
//获取本地平台的字符编码
System.out.println(System.getProperty("file.encoding"));
//2.创建字符输入流FileReader对象
FileInputStream fis=new FileInputStream("d:/myDoc/test.txt");
fr=new InputStreamReader(fis);
//3.调用FileReader对象的read()方法读取文件
StringBuffer s=new StringBuffer();
char[] ch=new char[1024];
int len=1;
while ((len=fr.read(ch))!=-1){
s.append(ch);
}
System.out.println(s);
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}finally {
//4.关闭字符输入流
try {
fr.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
}