IO流之字节流
2015-08-10 16:42
363 查看
字节输入流家族的
基类inputStream-->fileInputStream-->BufferedInputStream
字节流读取数据的的方式:
1.一次读取一个字节
2.一次读取一个字节数组
3.使用高级流字节缓冲流进行包装(也可以包括一次读取一个字节,一次读取一个字节数组)
1.创建字节输出流的时候都做了些什么,以及关闭流的时候都做了什么?
outPutStreamWriter(这两个类就是装饰类)
基类inputStream-->fileInputStream-->BufferedInputStream
字节流读取数据的的方式:
1.一次读取一个字节
package cn.itcast.io; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; public class FileInputStreamDemo4 { public static void main(String[] args) throws Exception { InputStream in=new FileInputStream("fos.txt"); // int by = in.read(); // System.out.print((char)by); // int by2 = in.read(); // System.out.print((char)by2); //使用循环改进 int by=0; while((by=in.read())!=-1){ System.out.print((char)by); } } }
2.一次读取一个字节数组
package cn.itcast.io; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; public class FileInputStreamDemo1 { public static void main(String[] args) throws Exception { InputStream in=new FileInputStream("fos.txt"); byte by[]=new byte[1024]; int len=0;//这里代表读取到的字节数 while((len=in.read(by))!=-1){ System.out.println(new String(by,0,len));//默认是gbk的解码,为了防止最后读取的个数不够一个字节数组因此我们使用new String(byte[],0,len) } in.close(); } }
3.使用高级流字节缓冲流进行包装(也可以包括一次读取一个字节,一次读取一个字节数组)
package cn.itcast.io; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream; public class BufferedDemo2 { public static void main(String[] args) throws Exception { //封装数据源 BufferedInputStream in=new BufferedInputStream(new FileInputStream("a.txt")); BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream("b.txt")); //使用一次读取一个数组的方式读取 byte by[]=new byte[1024]; int len=0; while((len=in.read(by))!=-1){ out.write(by, 0, len); } out.close(); in.close(); } }字节输出流家族 outputStream-->fileInputStream-->bufferedInputStream
1.创建字节输出流的时候都做了些什么,以及关闭流的时候都做了什么?
package cn.itcast.io; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream; public class FileOutputStreamDemo { public static void main(String[] args) throws Exception { OutputStream out=new FileOutputStream("fos.txt"); //创建字节输出流的时候做了什么? /* * 创建字节输出流对象了做了几件事情: * A:调用系统功能去创建文件 * B:创建fos对象 * C:把fos对象指向这个文件 */ out.write("中国".getBytes()); out.close(); /* * 为什么一定要close()呢? * A:让流对象变成垃圾,这样就可以被垃圾回收器回收了 * B:通知系统去释放跟该文件相关的资源 */ } }2.引出字符流 在字节流读取中文或者写中文的时候有时候出出现问题,或者出现字符流是针对文本文件(只要使用记事本打开我们可以看懂的就是文本文件,比如.java文件等,图像音频不是文本文件只能使用字节流)inputStreamReader
outPutStreamWriter(这两个类就是装饰类)
package cn.itcast.io; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream; public class BufferedDemo2 { public static void main(String[] args) throws Exception { //封装数据源 BufferedInputStream in=new BufferedInputStream(new FileInputStream("a.txt")); BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream("b.txt")); //使用一次读取一个数组的方式读取 byte by[]=new byte[1024]; int len=0; while((len=in.read(by))!=-1){ out.write(by, 0, len); } out.close(); in.close(); } }
相关文章推荐
- IBM Python 技术专题
- Redis Tutorial
- CentOS查看端口是否被占用
- CentOS查看端口是否被占用
- CentOS查看端口是否被占用
- ACM装箱问题
- Integer Inquiry
- flume + kafka 基本配置
- 开发规范
- adb连接时出现如下错误CreateProcess failure, error 2
- 经典linux内核面试题
- Android中RelativeLayout各个属性的含义
- hive命令行小窍门
- zoj 1671 Walking Ant 【bfs】
- axure中的变量及函数
- java 验证码生成
- 。net 页面跳转大全
- 如何使用CSS Sprites技术进行图片合并
- CodeForces 4A-Watermelon
- HDOJ-2004-成绩转换