javaIO字节流

来源:互联网 发布:买保险 知乎 编辑:程序博客网 时间:2024/05/16 01:24
package javaSE;


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


/*IO流(输入流,输出流)
   字节流和字符流
   字节流
   单字节读取不适合大文件
   InputStrame outputStrame
    inputStrame 抽象了应用程序读取数据得方式
    outputStrame 抽象了应用程序写出数据得方式
  EOF=End 读到-1 就读到结尾
  输入流基本方法
  int b=in.read()读取一个字节无符号填充到int低八位,-1是End
  in.read(byte[] buf)
  in.read(byte[]buf,int start ,int size)
  输出流基本方法
  out.write(int b) 写出一个byte 到流,b的低八位
  out.write(byte[]buf)将buf字节数组都写入到流
  out.write(byte[]buf,int start,int size)
  
  FileInputStrame 具体实现了在文件上的读写操作
*/
public class IOliu {


public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
IOUtils.printHex("C:\\新建文件夹\\新建文本文档.txt");
IOUtils.printHexByByteArray("C:\\新建文件夹\\新建文本文档.txt");
}
}
class IOUtils{
/*读取指定文件内容,按照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)+"  ");
if(i++%10==0)
System.out.println();
}
in.close();
}

public static void printHexByByteArray(String fileNames) throws IOException{
FileInputStream  in=new FileInputStream(fileNames);
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++)


System.out.print(Integer.toHexString(i)+"  ");
if(j++%10==0)
{
System.out.println();
}
}*/


/*这个适合批量读取,不定义字节数组的的大小*/
/*int bytes;
int j=1;
while((bytes=in.read(buf,0,buf.length))=-1){
for(int i=0;i<bytes;i++)
{
System.out.print(Integer.toHexString(buf[i]&0xf)+"  ");
if(j++%10==0)
{
System.out.println();
}
}

}*/
}
}
0 0
原创粉丝点击