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子类->具体实现了在文件上读取数据
字节流:
字节流对应着两个抽象的父类: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(); } }
相关文章推荐
- java基础 ArrayList集合基本方法演示
- Java基础---Java---IO流-----LineNumberReader方法及原理、自定义一个LineNumberReader、字节流、图片复制、mp3复制、
- java中OutputStream字节流与字符流InputStreamReader 每一种基本IO流BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWriter,FileInputStream,FileReader,FileWriter,InputStr
- JAVA基础知识回顾(基本数据类型,switch参数,equals与==的区别,Object有哪些公用方法)-1
- JAVA基础再回首(二十二)——转换流概述及用法、简化写法FileWriter和 FileReader、字符缓冲流及特殊用法、字节流字符流复制文件方法总结
- 黑马程序员——Java基础---线程的另一个总结(1)--基本创建方法
- Java 基础之String的基本方法(1)
- 学习笔记之java.io包中的字节流(上)—— 基本的InputStream和OutputStream
- java基础--方法定义和基本调用操作
- Java基础学习之InputStream的read()方法陷阱
- java语言基础-引出方法-方法定义-基本调用操作
- 【Java学习笔记】基础知识学习3【基本循环方法技巧】
- java基础——涉及基本类型的方法重载
- Java线程基础(2)-实现线程的三种基本方法
- Java基础知识强化68:基本类型包装类之Character概述和Character常见方法
- java 基础,Math类基本方法总结
- JavaScript基础(基本语法:变量、语句、数组、函数、对象、全局方法以及js与java不同,js与html关联)
- JAVA基础 day13 String类和StringBUffer类的常用方法 基本数据类型包装类的学习
- java基础—集合 Vcetor 基本方法演示
- 1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用