1 package day8.lesson3;
2
3 import java.io.FileInputStream;
4 import java.io.FileNotFoundException;
5 import java.io.FileOutputStream;
6 import java.io.IOException;
7
8 /*
9 3.6 字节流读数据(一次读一个字节数据)
10
11 字节输入流
12 FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream
13 该文件由文件系统中的路径名name命名
14
15 字节输入流读取数据的步骤
16 创建字节输入流对象
17 调用字节输入流对象的读数据方法
18 释放资源
19 */
20 public class FileInputStreamDemo01 {
21 public static void main(String[] args) throws IOException {
22 FileInputStream fis = new FileInputStream("stage2\\src\\day8\\lesson3\\fos1.txt");
23
24 /*int by = fis.read();
25 System.out.println(by); //97
26 System.out.println((char) by); //a*/
27
28 /*int by = fis.read();
29 while (by != -1){
30 System.out.println(by);
31 System.out.println((char) by);
32 by = fis.read();
33 }*/
34
35 //优化后的字节流读取数据标准代码
36 int by;
37 while ((by=fis.read()) != -1){
38 System.out.print((char)by);
39 }
40 /*
41 fis.read():读数据
42 by=fis.read():把读取到的数据赋值给by
43 by != -1:判断读取到的数据是否是-1
44 */
45
46 fis.close();
47 }
48 }
1 package day8.lesson3;
2
3 import java.io.FileInputStream;
4 import java.io.FileNotFoundException;
5 import java.io.IOException;
6
7 /*
8 3.8 字节流读数据(一次读一个字节数组数据)
9
10 一次读一个字节数组的方法
11 public int read(byte[] b):从输入流读取最多b.length个字节的数据
12 返回的是读入缓冲区的总字节数,也就是实际的读取字节个数
13
14 */
15 public class FileInputStreamDemo02 {
16 public static void main(String[] args) throws IOException {
17 FileInputStream fis = new FileInputStream("stage2\\src\\day8\\lesson3\\fos3.txt");
18
19 /*byte[] bys = new byte[5];
20
21 int len = fis.read(bys);
22 System.out.println(len);
23 System.out.println(new String(bys));*/
24 //String类的构造函数之一
25 // String(byte[] bytes) 通过使用平台的默认字符集解码指定的字节数组来构造新的 String 。
26 //注意,/r/n等也算作一个字符
27 //String类的构造函数之一
28 // String(byte[] bytes, int offset, int length) 通过使用平台的默认字符集解码指定的字节子阵列来构造新的 String 。
29
30 byte[] bys = new byte[1024]; //1024及其整数倍
31 int len;
32 while ((len=fis.read(bys)) != -1){
33 System.out.print(new String(bys, 0, len));
34 }
35
36 fis.close();
37 }
38 }