字节输入流一次读取一个字节的原理与字节输入流一次读取多个字节
字节输入流一次读取一个字节的原理
1.新建new FileInputStream对象会指向要读取的文件 指向的是文件中的第一个字节
2.read();读取一个字节并返回 读取 read找JVM再OS再读取数据来
3.read方法读完一位会自动向后移动一位 先a 再 b 再移动一位c 再移动一位到结束标记(window系统的结束标记给到Jvm是-1所以返回了-1)
字节输入流一次读取多个字节
package DemoOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Arrays; /* 字节输入流一次读取多个字节的方法: int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。 明确两件事情: 1.方法的参数byte[]的作用? 起到缓冲作用,存储每次读取到的多个字节 数组的长度一把定义为1024( 1kb)或者1024的整数倍 2.方法的返回值int是什么? String类的构造方法 String( byte[]bytes):把字节数组转换为字符串 string(byte[ ] bytes, int offset, int length)把字节数组的一部分转换为字符串 offset:数组的开始索引Length :转换的字节个数 */ public class Demo02InputStream { public static void main(String[] args) throws IOException { //创建FileInputStream对象,构造方法中绑定要读取的数据源 FileInputStream fie = new FileInputStream("c.txt"); //使用FiLeInputStream对象中的方法readi读取文件 //l/int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b 中。 /* byte[] bytes = new byte[2]; int len = fie.read(bytes); System.out.println(len); System.out.println(Arrays.toString(bytes)); System.out.println(new String(bytes)); len = fie.read(bytes); System.out.println(len); System.out.println(new String(bytes)); len = fie.read(bytes); System.out.println(len); System.out.println(new String(bytes)); len = fie.read(bytes); System.out.println(len); System.out.println(new String(bytes)); len = fie.read(bytes); System.out.println(len); System.out.println(new String(bytes)); */ byte[] bytes = new byte[1024]; int len = 0; while ((len = fie.read(bytes))!=-1){ System.out.println(new String(bytes,0,len)); } //释放资源 fie.close(); } }