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

来源:互联网 发布:杭州两年java工资 编辑:程序博客网 时间:2024/05/16 10:22


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){//前面补0System.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(); }

0 0
原创粉丝点击