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具体实现了在文件上读取数据
*/
单字节读取不适合大文件读取。效率低。
批量读取。对大文件读取效率高。
//字节流
/*
*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(); }
相关文章推荐
- 黑马程序员——Java基础---I/O流(中[字节流])
- Java语言基础-IO流(输入输出流) 字节流、转换流
- java 基础之 IO(字节流和字符流)
- java基础<IO输出与输入>--->IO流<字节流>
- 黑马程序员--java 基础之IO流 字节流与转换流 --07
- java基础21——字节流
- Java基础_I/O流
- java基础知识回顾之javaIO类---FileInputStream和FileOutputStream字节流复制图片
- java基础知识I/O流使用详解
- Java基础---Java---IO流-----LineNumberReader方法及原理、自定义一个LineNumberReader、字节流、图片复制、mp3复制、
- 黑马程序员--Java基础学习之IO流之字节流、字符流、读取写入文件、Copy文件、键盘输入输出、流操作的基本规律
- java 基础之I/O流
- java基础:I/O流
- java基础:字节流和字符流的转换
- Java基础知识学习六(字节流与字符流)
- 黑马程序员_Java基础_IO流(字符流缓冲区和字节流相关操作以及相关操作技巧)
- Java基础之IO流,通过字节流缓冲区进行媒体文件的复制操作
- 黑马程序员-JAVA基础-IO流之字节流和字节流缓冲区
- 黑马程序员_Java基础_IO流_字节流,字节流操作文件,缓冲区字节流,流的使用规律,异常记录原理
- java基础学习心得——字节流读取文章的3种方法