java之IO流-字节流
来源:互联网 发布:西门子软件质量规范 编辑:程序博客网 时间:2024/05/21 10:37
本文章为基础知识,供入门者参考。
一.字节流之介绍
字节流:读取字节byte。
分类:输入流和输出流,这是相对于程序而言,程序获取数据(从硬盘中读取数据)称为输入流,程序将数据输出(如保存到硬盘上)称为输出流。
超类:InputStream 所有字节输入流的超类;OutputStream 所有字节输出流的超类。
我们接下来先讨论FileInputStream和FileOutputStream。
二、FileInputStream
从文件系统中的某个文件中获取输入字节,常用于读取二进制数据。
hello.txt中存储的内容是:我是一个程序员
@Test public void testInputStream() throws IOException { File file = new File("D:\\hello.txt"); if (!file.exists()) { file.createNewFile(); } //read()每次只读取一个字节,返回0~255之间的数据,读到末尾返回-1 System.out.println("--------1--------"); //构造方法 FileInputStream(File file) FileInputStream in = new FileInputStream(file); //构造方法 FileInputStream(String name) //FileInputStream in = new FileInputStream("D:\\hello.txt"); while (true) { // 每次读取一个字节 int len = in.read(); if (len == -1) { break; } System.out.println(len); } in.close(); //read(byte[] b)每次最多可以读取b.length个字节,返回实际读取字节数。读到末尾返回-1 System.out.println("-------2---------"); FileInputStream in1 = new FileInputStream(file); while (true) { byte[] b = new byte[5]; int len = in1.read(b); if (len == -1) { break; } System.out.println(Arrays.toString(b)); System.out.println(len); } in1.close(); //read(byte[] b, int offset, int len)每次最多读取len个字节放入byte[]中 //0 <= offset <= b.length; 0 <= len <= b.length - offset System.out.println("-------3---------"); FileInputStream in2 = new FileInputStream(file); while (true) { byte[] b = new byte[5]; int len = in2.read(b, 2, 3); if (len == -1) { break; } System.out.println(Arrays.toString(b)); System.out.println(len); } //skip(long n)跳过n个字节的数据 System.out.println("-------4---------"); FileInputStream in3 = new FileInputStream(file); while (true) { byte[] b = new byte[6]; int len = in3.read(b); if (len == -1) { break; } in3.skip(6); System.out.println(Arrays.toString(b)); System.out.println(len); } } //运行结果 /* --------1-------- 206 210 202 199 210 187 184 246 179 204 208 242 212 177 -------2--------- [-50, -46, -54, -57, -46] 5 [-69, -72, -10, -77, -52] 5 [-48, -14, -44, -79, 0] -------3--------- [0, 0, -50, -46, -54] 3 [0, 0, -57, -46, -69] 3 [0, 0, -72, -10, -77] 3 [0, 0, -52, -48, -14] 3 [0, 0, -44, -79, 0] 2 -------4--------- [-50, -46, -54, -57, -46, -69] 6 [-44, -79, 0, 0, 0, 0] 2 */
三、FileOutputStream
1.构造方法
FileOutputStream(String name)FileOutputStream(String name, boolean append) //写入到原文件末尾FileOutputStream(File file)FileOutputStream(File file, boolean append) //写入到原文件末尾//如果指定的文件是一个目录而不是一个文件,或该文件不存在而又无法创建它。会抛出FileNotFoundException.
2.常用方法
@Test public void testOutputStream() throws IOException { File file = new File("D:\\hello.txt"); if(file.exists()) { file.createNewFile(); } //FileOutputStream out = new FileOutputStream(file); //FileOutputStream out = new FileOutputStream(file,true); //FileOutputStream out = new FileOutputStream("D:\\hello.txt"); FileOutputStream out = new FileOutputStream("D:\\hello.txt",true); int b = 97; out.write(b);//一次写一个字节 //a String s = "我是一个程序员"; byte[] bytes = s.getBytes("gbk"); out.write(bytes);//一次写出一个字节数组 //我是一个程序员 out.write(bytes,2,bytes.length-2);//从第3个字节开始写出bytes.length-2个字节 //是一个程序员 out.close(); }
四、缓冲流
BufferedInputStream , BufferedOutputStream 。
1.BufferedInputStream 缓冲输入流
1.1 构造方法
BufferedInputStream(InputStream in)BufferedInputStream(InputStream in, int size) //创建一个缓冲区大小为size的缓冲流,size>0
1.2 常用方法
常用方法read(),同FileInputStream的read()
2.BufferedOutputStream 缓冲输出流
2.1 构造方法
BufferedOutputStream(OutputStream out)BufferedOutputStream(OutputStream out, int size)
2.2 常用方法
write(int b)write(byte[] bytes, int off, int len)flush() 刷出缓存中的数据。
阅读全文
0 0
- Java IO之字节流
- Java IO之字节流
- Java IO之字节流
- Java IO 之字节流
- Java IO之字节流
- Java IO之字节流
- java IO 之 字节流
- Java基础----IO流之字节流
- Java基础--IO流之字节流
- java基础之字节流(IO流)
- java基础IO流之字节流
- Java之IO流---字节流
- Java之IO流---字节流
- Java之IO流---字节流
- java之IO流-字节流
- Java基础18-IO之字节流
- 跟着老毕学Java之IO字节流
- [学习笔记]Java IO之字节流
- easyui--4.tree
- PermissionsDispatcher
- 我(程序员?)
- ubuntu17.04中锐捷客户端登录问题
- 541. Reverse String II
- java之IO流-字节流
- EventBus3.0的简单实用
- 携程反爬中的Eleven参数-反爬与反反爬的奇技淫巧
- JavaScript表单验证
- UML四大关系篇
- struts2+hibernate4的log4j配置(下次使用)
- Mac-ios下JDK的安装路径(java)
- imx6ul+获取rtc时间
- Leetcode算法学习日志-525 Contiguous Array