字节流字节输入流 读取数据 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)字节数组
青春不是年华,而是心境;青春不是桃面丹唇柔膝,