Java_08_31课堂总结

来源:互联网 发布:js判断密码长度 编辑:程序博客网 时间:2024/05/18 20:49
 

12.3字节流

1 抽象基类InputStream、OutputStream

字节流可以操作任何数据

字符流使用的是字符数组;字节流使用的是字节数组

实例1FileInputStreamFileOutputStream的使用。

FileOutputStream fos = new FileOutputStream("a.txt");

fos.write(12);//直接将数据写入到了目的地。

fos.close();//只关闭资源。

FileInputStream fis = new FileInputStream("a.txt");

//fis.available();//获取关联的文件的字节数。

//如果文件体积不是很大,可以这样操作。

byte[] buf = new byte[fis.available()];//创建一个刚刚好的缓冲区。但是这有一个弊端,就是文件过大,大小超出jvm的内容空间时,会内存溢出。

fis.read(buf);

System.out.println(new String(buf));

实例2:编写程序copy一个图片

BufferedInputStream bufis = new BufferedInputStream(new FileInputStream("1.jpg"));

BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream("2.jpg"));

Int by = 0;

while((by=bufis.read())!=-1){

bufos.write(by);

}

bufos.close();

bufis.close();

二、转换流

在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在一组字节流—字符流的转换流。

1. OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即:将一个字符流的输出对象变为字节流的输出对象。

2. InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即:将一个字节流的输入对象变为字符流的输入对象。

转换过程

 以文件操作为例,则在内存中的字符数据需要通过OutputStreamWriter变为字节流才能保存在文件中,读取的时候需要讲读入的字节流通过InputStreamReader变为字符流

OutputStreamWriterInputStreamReader的构造—他们本身是字符流,又具有转换的作用,因此在构造的时候,需要传入字节流对象

public OutputStreamWriter(OutputStream out) 

public OutputStreamWriter(OutputStream out, String charsetName)

public InputStreamReader(InputStream in)

public  InputStreamReader(InputStream in, String charsetName)

标准的输入输出是指在控制台方式下,程序与系统进行交互的方式,分为三种:

标准的输入,对象是键盘。

标准的输出,对象是显示器屏幕。

标准的错误输出,对象也是显示器屏幕。 

Java通过System类实现标准的输入输出功能

public static final InputStream in

public static final InputStream out

public static final InputStream err

a、标准输入System.in
System.in作为字节输入流类InputStream的对象,实现标准的输入,使用其read()方法从键盘接收数据。

public int read() throws IOException   

public int read(byte[] i) throws IOException 

b、标准的输出System.out
System.out是打印流类PrintStream的对象,用来实现标准输出。print()println()方法,支持任意的基本类型作为参数。

public void print(参数)

public void println(参数)

原创粉丝点击