file字节输入流
字节流、字符流
1.字节流
-
inputStream、OutputStream
inputStream抽象了理论应用程序读取数据的方式
2.EOF = End 读到-1就读到结尾
3.输入流基本方法
int b = in.read(); 读取一个字节无符号填充到int的低8位,-1是EOF
in.read(byte[] buf) 读取数据填充到字节数组buf
in.read(byte[] buf,int start,int size) 读取数据到字节数组buf从buf的start位置开始存放size长度的数据。
4.输出流基本方法
out.write(int b) 写出一个byte到流,b的低8位
out.write(byte[] buf) 将buf字节数组都写入都流
out.write(byte[] buf,int start,int size) 字节数组buf从start位置开始写size长度的字节到流
5.FileInputStream--->具体实现了在文件上读取数据
工具类,字节流的读操作
public class IOUtil { import java.io.FileInputStream; import java.io.IOException; /** * 读取指定文件内容,按照16进制输出到控制台 * 并且每输出10个byte换行 * @param fileName * @throws IOException */ public static void printHex(String fileName) throws IOException { //把文件作为字节流进行读操作 FileInputStream in = new FileInputStream(fileName); int b; int i = 1; while((b= in.read())!=-1) { if(b <= 0xf) { //单位数前面补0 System.out.print("0"); } System.out.print(Integer.toHexString(b)+" "); //将整型b转换为16进制表示的字符串 if(i++%10==0) { System.out.println(); } } in.close(); } } 测试类 import java.io.IOException; public class IOUtilTest1 { public static void main(String[] args) { try { IOUtil.printHex("E:\\Java\\eclipse-workspace\\20220312-day\\src\\edu\\uestc\\avatar\\ComputeArea.java"); } catch (IOException e) { e.printStackTrace(); } } }
工具类二
public static void printHexByByteArray(String fileName) throws IOException { FileInputStream in = new FileInputStream(fileName); byte[] buf = new byte[8 * 1024]; //从in中批量读取字节,放入到buf这个数组中,从第0个位置开始放,最多放buf.length个 返回的是读到的字节的个数 // int bytes = in.read(buf,0,buf.length); //一次性读完,说明字节数组足够大 // int j = 1; // for(int i = 0;i < bytes;i++) { // if(buf[i] <= 0xf) { // System.out.print("0"); // } // System.out.print(Integer.toHexString(buf[i])+" "); // if(j++ %10 == 0) { // System.out.println(); // } // } int bytes = 0; int j = 1; while((bytes = in.read(buf,0,buf.length))!=-1) { for(int i = 0;i < bytes; i++) { System.out.println(Integer.toHexString(buf[i] & 0xff) + " "); //0xff byte类型为8位,int类型32位,为了避免数据转换错误,通过& 0xff 将高24位清零 if(j++ %10 == 0) { System.out.println(); } } } }
测试类二
public class IOUtilTest2 { public static void main(String[] args) { try { IOUtil.printHexByByteArray("E:\\Java\\eclipse-workspace\\20220312-day\\src\\edu\\uestc\\avatar\\ComputeArea.java"); } catch (IOException e) { e.printStackTrace(); } } }
浙公网安备 33010602011771号