一、字节流、字符流
1、字节流
a、Inputstream 、Outputstream
Inputstream :抽象了应用程序读取数据的方式
Outputstream : 抽象了应用程序写出数据的方式
b、EOF=End 得到-1就读到结尾
c、输入流的基本方法
int b = in.read();读取一个字节无符号填充到整型的低八位
in.read(byte[] buf)
in.read(byte[] buf,int start,int size)从start开始写,写size个字节
d、输出流基本方法
out.write(int b)写一个byte到流,b的低8位
out.write(byte[] buf)将buf字节数组写到流
out.write(byte[] buf,int start,int size)
e、FileInputeStream 具体实现了在文件上读取数据
二、字节流读取实例
package com.file;
import java.io.FileInputStream;
import java.io.IOException;
public class IoUtil {
/*
* 读取文件内容,以16进制方式输出
* 10byte换行
* */
public static void printHex(String fileName) throws IOException{
//把文件作为字节流进行操作
FileInputStream in = new FileInputStream(fileName);
int b;
int i=-1;
//循环输出
while ((b=in.read())!=-1){
System.out.print(Integer.toHexString(b)+" ");//以16进制输出
if (i++%10==0){
System.out.println();
}
}
in.close();//关闭
}
}
public static void printHexByte(String fileName) throws IOException{
FileInputStream in = new FileInputStream(fileName);
//文件读到字节数组中
byte[] buf = new byte[20*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 (i++%10==0){
System.out.println();
}
}
in.close();
}