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

java文件传输基础:字节流——InputStream类及基本法方法

2017-10-11 08:43 85 查看
IO流:java做输入和输出的基础,包括输入流和输出流,也可以分为字节流和字符流。今天为大家介绍与字节流相关的基础知识。

字节流

字节流对应着两个抽象的父类:InputAtream、OutoutStream;其中InputStream抽象了应用程序读取数据的方式,OutputStream抽象了应用程序写出数据的方式。

读取文件结束:EOF=End 读到-1就是读到结尾

输入流: 如果将键盘看作一个文件,那么我们在输入的过程中对键盘文件进行的是输入还是输出呢?答案是输入。读取键盘文件的内容,在写入文件中。其中,输入流的基本方法是读:

int b=in.read();读取一个字节无符号填充到int的低八位

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);

FileInputStream子类->具体实现了在文件上读取数据

public void printHex(String Filename) throws Exception {
/*
* 读取指定文件内容,按照16进制输出
* 每输出10个byte换行
*/
//把文件作为字节流进行读操作
FileInputStream in=new FileInputStream(Filename);
int b;
int i=1;
while((b=in.read())!=-1) {
if(b<=0xf) {
System.out.print("0");
}
System.out.print(Integer.toHexString(b)+"  ");
if(i++%10==0) {//i先做运算,做完之后再+1
System.out.println();
}
}
in.close();
}
public void printHexByByte(String filename) throws IOException{

System.out.println("----------------------------------------------------------------------------------");
FileInputStream in=new FileInputStream(filename);
byte[] bytebuf=new byte[20*1024];
//从in中批量读取字节,放入到bytebuf这个字节数组中,从第0个字节开始放,最多放bytebuf。length个字节,返回的是读到的字节的个数
int bytes=in.read(bytebuf,0,bytebuf.length);
int j=1;
for(int i=0;i<bytes;i++) {
if(bytebuf[i]<=0xf) {
System.out.print("0");
}
System.out.print(Integer.toHexString(bytebuf[i])+"  ");
if(j++%10==0) {
System.out.println();
}
}
in.close();
}
public void printHexByByteArray(String filename) throws IOException{
System.out.println("--------------------------------------------------------------------------------------");
FileInputStream in=new FileInputStream(filename);
byte[] buf=new byte[20*1024];
int j=1;
int bytes=0;
while((bytes=in.read(buf, 0, buf.length))!=-1) {//读到的字节的个数要不等于-1,如果等于-1的话就结束读取
for(int i=0;i<bytes;i++) {
if(buf[i]<0xf) {
System.out.print("0");
}
System.out.print(Integer.toHexString(buf[i]&0xff)+" ");
if(j++%10==0) {
System.out.println();
}
}
}
in.close();
}
public static void main(String[] args){
// TODO Auto-generated method stub
try {
IOStream iostream=new IOStream();
iostream.printHex("D:\\log_network.txt");
iostream.printHexByByte("D:\\log_network.txt");
iostream.printHexByByteArray("D:\\log_network.txt");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐