JavaSE-17.3.5【字节流读数据(一次读一个字节数据 & 一次读一个字节数组数据)】
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 }