您的位置:首页 > 其它

IO流之字节流

2015-08-10 16:42 363 查看
字节输入流家族的

基类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();
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: