InputStream、OutputStream 抽象了应用程序读写数据方式(父类,抽象类)
FileInputStream、FileOutputStream (子类)
EOF=End 及文件结尾(读到-1)(is.read()=-1)
输入流基本方法 read();
输入流基本方法
int b=in.read();读取一个字节无符号填充到int的低八位,前面的24位补零。(int是32位,一个字节8位)-1是EOF
in.read(byte[] buf);读取数据填充到字节数组buf
in.read(byte[] buf,int start,int size),同上,从buf的start位置开始存放size长度的数据
输出流基本方法
out.write(int b) 写出一个byte到流,b的低八位
out.write(byte][] buf) 将buf字节数组都写入到流
out.write(byte[] buf,int start,int size);同上,详见read对应方法
FileInputStream 具体实现了文件上读取数据
FileInputStream、FileOutputStream (子类)
EOF=End 及文件结尾(读到-1)(is.read()=-1)
输入流基本方法 read();
输入流基本方法
int b=in.read();读取一个字节无符号填充到int的低八位,前面的24位补零。(int是32位,一个字节8位)-1是EOF
in.read(byte[] buf);读取数据填充到字节数组buf
in.read(byte[] buf,int start,int size),同上,从buf的start位置开始存放size长度的数据
输出流基本方法
out.write(int b) 写出一个byte到流,b的低八位
out.write(byte][] buf) 将buf字节数组都写入到流
out.write(byte[] buf,int start,int size);同上,详见read对应方法
FileInputStream 具体实现了文件上读取数据
FileInputStream文件输入
单字节输入即不用数组。
/**
* 批量读取,对大文件而言效率高,也是我们最常用的读文件的方式
* @Inparam fileName
* @throws IOException
*/
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++){
System.out.print(Integer.toHexString(buf[i] & 0xff)+" ");
if(j++%10==0){
System.out.println();
}
}
单字节输入即不用数组。
/**
* 批量读取,对大文件而言效率高,也是我们最常用的读文件的方式
* @Inparam fileName
* @throws IOException
*/
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++){
System.out.print(Integer.toHexString(buf[i] & 0xff)+" ");
if(j++%10==0){
System.out.println();
}
}