今天学习了IO流中的字符流也就是Reader和Writer的继承结构图,以及使用FileInputStream字节流的方式读取数据。
Reader实现Closeable接口,InputStreamReader,BufferedReader继承了Reader父类,FileReader继承了InputStreamReader父类;同理Writer实现了Closeable和flushable接口,OutputStreamWriter和BufferedWriter继承了Writer父类,FileWriter继承了OutputStreamWriter父类。
以下是两种字节方式读取文件的代码实现;(一、回顾了处理异常的两种方式和finally语句块的使用:1.throws Exception 2.try{}catch(){} 3.finallly{} 二、学习了相对路径和绝对路径的使用)
/*
java.io.InputStream;
java.io.FileInputStream;文件字节输入流
按照字节方式读取文件
/
import java.io.;
public class FileInputStreamTest01{
public static void main(String[] args){
FileInputStream fis = null;
try{
//1.要读取某文件,先与这个文件创建一个“输入流”
//文件路径
//String filePath = "Temp.txt";//相对路径,相对当前而言,在当前路径下找
String filePath = "C:\\Users\\张月明\\Desktop\\Java\\java笔记\\IO流\\Temp.txt";
//String filePath = "C:/Users/张月明/Desktop/Java/java笔记/IO流/Temp.txt";
fis = new FileInputStream(filePath);
//2.开始读
int i1 = fis.read();//以字节的方式读取
int i2 = fis.read();
int i3 = fis.read();
int i4 = fis.read();
int i5 = fis.read();
int i6 = fis.read();
int i7 = fis.read();
System.out.println(i1);//97
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
System.out.println(i5);
System.out.println(i6);
System.out.println(i7);
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
//为了保证流一定会释放,所以在finally语句块中执行
if(fis!=null){
try{
fis.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
}
import java.io.*;
//以下程序存在缺点:频繁访问磁盘,伤害磁盘,并且效率低
public class FileInputStreamTest02{
public static void main(String[] args) throws IOException{
//1.创建流
FileInputStream fis = new FileInputStream("Temp.txt");
//2.开始读
/*
while(true){
int temp = fis.read();
if(temp==-1) break;
System.out.println(temp);
}
*/
//升级循环
int temp = 0;
while((temp=fis.read()) != -1){
System.out.println(temp);
}
//关闭
fis.close();
}
}