您的位置:首页 > 编程语言 > Java开发

java基础---I/O流--字节流(2)

2016-11-22 19:19 302 查看
1.字节流

//字节流
/*
*1.
*InputStream OutputStream
*InputStream 应用程序读取数据的方式
*OutputStream 应用程序写出数据的方式
* 2.
* EOF=end 读到-1就是读到结尾。
*3.
*输入流基本方法;
* int b=in.read();读取一个字节无符号填充到int低八位,-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长度的字节到流
* @@@@@
* FileInputStream具体实现了在文件上读取数据
 */

单字节读取不适合大文件读取。效率低。
批量读取。对大文件读取效率高。


package cn.lanz.test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

//字节流工具类
public class IOUtils {

/**
* <p>
*   读取指定文件内容,按照16进制输出到控制台<br/>
*   每输出10个换行。
* </p>
* @throws IOException
* @描述: @param fileName
*/
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)+" ");
if(i++%10==0){
System.out.println();
}
}
in.close();
}
 }

IOUtils.printHex("e:\\test\\HashMap.java");

public static  void printHexByteArray(String fileName) throws Exception{
//把文件作为字节流进行读操作
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=0;
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();
 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: