IO流(二):字节流及其缓冲流

字节流字节输入流 读取数据 InputStream字节输出流 写出数据 OutputStream字符流字符输入流 读取数据 Reader字符输出流 写出数据 Writer注意:一般我们在探讨IO流的时候,如果没有明确说明按哪种分类来说,默认情况下是按照数据类型来分的。每种基类的子类都是以父类名作为后缀名。

二、FileOutputStream:文件输出流

(一)概述

1、特点

2)文件是否可用或能否可以被创建取决于基础平台。特别是某些平台一次只允许一个FileOutputStream(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。

3)FileOutputStream用于写入诸如图像数据之类的原始字节的流。要写入字符流,请考虑使用 FileWriter。

2、构造方法

1)不追加:

FileOutputStream(File file) FileOutputStream(String name)

2)可追加

FileOutputStream(File file, boolean append) FileOutputStream(Stringname, boolean append)

(二)功能

1、输出功能

1)public void write(int b):写一个字节

换行:write(97)97 : 底层二进制数据通过记事本打开 ,找97对应的字符值 :a

2)public void write(byte[] b):写一个字节数组

getBytes():转换为字节数据

<span style="font-family:Arial;font-size:18px;">//写数据fos.write("hello,IO".getBytes());fos.write("java".getBytes());</span>

3)public void write(byte[] b,int off,int len):写一个字节数组的一部分

<span style="font-family:Arial;font-size:18px;">/* * 字节输出流操作步骤: * A:创建字节输出流对象 * B:调用write()方法 * C:释放资源 * * public void write(int b):写一个字节 * public void write(byte[] b):写一个字节数组 * public void write(byte[] b,int off,int len):写一个字节数组的一部分 */public void test2() throws IOException{// 创建字节输出流对象// OutputStream os = new FileOutputStream("fos2.txt"); // 多态FileOutputStream fos = new FileOutputStream("fos.txt");// 调用write()方法fos.write(97); //97 — 底层二进制数据– 通过记事本打开 — 找97对应的字符值 — a// fos.write(57);// fos.write(55);//public void write(byte[] b):写一个字节数组byte[] bys={97,98,99,100,101};fos.write(bys);//public void write(byte[] b,int off,int len):写一个字节数组的一部分fos.write(bys,1,3);//释放资源fos.close();}</span>

三、FileInputStream:文件输入流

(一)概述

1、特点

1)FileInputStream 从文件系统中的某个文件中获得输入字节。

2)哪些文件可用取决于主机环境。

3)FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader。

2、构造方法

1)FileInputStream(File file)

2)FileInputStream(String name)

(二)功能

1、读取功能

1)int read():一次读取一个字节

获取的是字节码,需要转换成字符。如果读取的数据是-1,说明已经读取到文件的末尾。

int by = 0;// 读取,赋值,判断while ((by = fis.read()) != -1) {System.out.print((char) by);}// 释放资源fis.close();

2)int read(byte[] b):一次读取一个字节数组

字符数组与字节数组都可以直接转换成 String。定义的字符数组的长度一般是1024或者1024的整数倍。

// 数组的长度一般是1024或者1024的整数倍byte[] bys = new byte[1024];int len = 0;while ((len = fis.read(bys)) != -1) {//System.out.println(len);System.out.print(new String(bys, 0, len));}// 释放资源fis.close();

(三)实例

1、拷贝文件数据(文本、图片、音乐)

1)单个字节

2)字节数组

青春不是年华,而是心境;青春不是桃面丹唇柔膝,

IO流(二):字节流及其缓冲流

相关文章:

你感兴趣的文章:

标签云: