Day13
文章目录
字节流读取
字节流是由字节组成的,字符流是由字符组成的.
Java里字符由两个字节组成**.**字节流是基本,主要用在处理二进制数据
1. InputStream字节输入流
InputStream 字节输入流—抽象父类----不可实例化
FileInputStream 操作文件的字节输入流—普通子类
FileInputStream(File file)
FileInputStream( String pathnName)
BufferedInputStream 高效字节输入流—普通子类
BufferedInputStream(InputStream in)
由于抽象父类不可实例化,所以传入的参数是FIS(FileInputStream)
read(),每次调用都会读取一个字节,如果读到末尾,返回值是-1
TIPS:读取时需要设置变量保存读取的结果,否则数据读取不完全
流使用完毕后必须【关闭.close】!必须写在finally{}中,确保关流是一定会执行的 ,finally是try-catch结构的第三个部分,这个部分不论是否捕获到异常,一定会执行
package cn.tedu.file;
import java.io.*;
//字节流测试
public class TestIn {
public static void main(String[] args) {
//method();//字节流的读取
method2();//高效字节流
}
private static void method2() {
InputStream in = null;
try {
in = new BufferedInputStream(new FileInputStream("E:\\ready\\1.txt"));
int b;
while ((b = in.read())!=-1){
System.out.println(b);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void method() {
//本方法都可以使用的局部变量
InputStream in = null;
try {
//InputStream in = new InputStream 报错抽象类不能实例化
in = new FileInputStream("E:\\ready\\1.txt");
/*read()每次调用都会读取一个字节,所以用变量b来定义,如果读到数据末尾,返回-1*/
int b;
while ((b = in.read())!=-1){
System.out.println(b);
}
} catch (Exception e) {
e.printStackTrace();//打印错误信息
/*try-catch结构中的第三个部分:finally
* 这部分不论是否捕获到异常,是一定会被执行到的代码,常用于关流*/
}finally {
//释放资源,流资源用完必须释放!!
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2.Reader 字符输入流
Reader 字符输入流—抽象父类—不可实例化
FileReader 文件字符输入流–普通子类
FileReader(File file)
FileReader(String pathName)
BufferedReader 高效(缓冲)字符输入流— 普通子类
BufferedReader(Reader in) 一般使用时传入的是Reader的子类
package cn.tedu.file;
import java.io.*;
public class TestIn2 {
//字符流的读取
public static void main(String