IO流学习笔记
2015-11-13 13:59
351 查看
IO(Input Output)流 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的对象都在IO包中
流按操作数据分为两种:字节流与字符流。 流按流向分为:输入流,输出流。
IO流常用基类 ★字节流的抽象基类: InputStream ,OutputStream。 ★字符流的抽象基类: Reader , Writer。 注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。 如:InputStream的子类FileInputStream。 如:Reader的子类FileReader。
输入字节流InputStream InputStream的作用是标志那些从不同输入源产生的类。InputStream是所有输入字节流的抽象父类,因此不能够直接构造InputStream的实例,必须通过它的子类来进行构造。由于它是抽象类,因此提供了一些抽象接口和固有的函数实现。abstract int read(); //从输入流中读取数据的下一个字节int read(byte[] b); //从输入流中读取字节数组,并将其存储在缓冲区数组b中int read(byte[] b,int off,intlen);//将输入流中最多len个数据字节读入byte数组int available(); //返回此输入流可以读取(或跳过)的估计字节数long skip(long n); //跳过和丢弃此输入流中数据的n个字节void close(); //关闭此输入流并释放与该流关联的所有的系统资源
根据输入源的不同,共分为如下几种类型 ★ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用。 ★FileInputStream:把一个文件作为InputStream,实现对文件的读取操作。 ★ObjectInputStream:把一个对象作为InputStream,实现对文件的读取操作。 ★StringBufferInputStream:把一个String对象作为InputStream并且它还有三个特殊的实现。 ★PipeInputStream:实现了管道(Pipe)的概念,主要在线程中使用。 ★SequenceInputstream:把多个Inputstream合并为一个InputStream。 ★FilterInputStream:对输入流进行各种过滤操作FilterInputStream还有一组过滤器的具体实现 ★BufferedInputstream:缓存过滤器 ★DataInputstream:数据过滤器 ★LineNumberInputStream:行号过滤器
输出字节流OutputStream OutputStream的作用就是输出字节,并将这些字节发送到某个接收器。OutputStream表示字节流的所有类的抽象父类,因此不能够直接构造OutputStream的实例,必须通过它的子类来进行构造。由于它是抽象类,因此提供了一些抽象接口和固有的函数实现。abstract int write(int b); //将指定的字节写入此输出流void write(byte[] b); //将b.length个字节从指定的byte数组写入此输出流void write(byte[] b,int off,intlen);//将数组中从off开始的len个字节写入此输出流void flush(); //刷新此输出流并强制写出所有的缓存的输出字节void close(); //关闭此输入流并释放与该流关联的所有的系统资源
根据输出源的不同,共分为如下几种类型 ★ByteArrayOutputStream:把信息存入内存中的一个缓冲区中。 ★FileOutputStream:把信息存入文件中。 ★ObjectOutputStream:把一个对象作为OutputStream,实现对对象的写入操作。并且它还有三个特殊的实现。 ★PipeOutputStream:实现了管道(Pipe)的概念,主要在线程中使用。 ★FilterOutputStream:对输入流进行各种过滤操作FilterInputStream还有一组过滤器的具体实现 ★BufferedOutputstream:缓存过滤器 ★DataOutputstream:数据过滤器 ★PrintStream:格式化过滤器看一下复制一个图片的代码
输入字符流Reader Reader是用来输入字符数据,它所提供的方法跟Inputstream基本一样。Reader表示字符流的所有类的抽象父类,因此不能够直接构造Reader的实例,必须通过它的子类来进行构造。由于它是抽象类,因此提供了一些抽象接口和固有的函数实现。 abstract int read(char[] cbuf,int off,intlen);//将字符读入数组某一部分 abstract void close(); //关闭该流并释放与之关联的所有资源 int read(); //都去单个字符 int read(char[] cbuf); //将字符读入数组<
4000
div> void reset(); //重置该流 long skip(long n); //跳过字符
根据输入源的不同,共包括如下几种类型,分别与InputStream额实现类想对应。★CharArrayReader:与ByteArrayInputStream对应,用于读入内存中的字符数组★FileReader:与FileInputStream对应,用于读取文件的内容★StringReader:与StringBufferInputStream对应,用于读取字符串它还有3个特殊的实现★PipeReader:与PipeInputStream对应★BufferedReader:与BufferedInputStream对应。★FilterReader:与FilterInputStream对应BufferedReader还有一个行号的实现类★LineNumberReader:与LineNumberInputStream对应,行号读取类
输出字符流Writer Writer的作用就是输出字节,并将这些字符发送到某个接收器。Writer表示字符流的所有类的抽象父类,因此不能够直接构造Writer的实例,必须通过它的子类来进行构造。由于它是抽象类,因此提供了一些抽象接口和固有的函数实现。abstract int write(char[] cbuf,intoff,int len); //写入字符数组的某一部分void write(char[] cbuf); //写入字符数组void write(int c); //写入单个字节void write(String str) //写入单个字符串void (String str,int off,int len) //写入字符串的某一部分void flush(); //刷新该流的缓存void close(); //关闭该流,但要先刷新它
根据输出源的不同,共包括如下几种类型,分别与OutputStream的实现类相对应。★CharArrayWriter:与ByteArrayOutputstream对应,用于写入内存中的字符数组★FileWriter:与FileOutputstream对应,用于写入文件的内容★StringWriter:无与之对应的以字节为导向的Stream,用于写入内存中的字符串它还有3个特殊的实现★PipeWriter:与PipeOutputstream对应★BufferedWriter:与BufferedOutputstream对应。★FilterWriter:与FilterOutputstream对应★PrintWriter:格式化过滤器看一下代码
public static void copy_1() throws IOException {
// 创建目的地。
FileWriter fw = new FileWriter("RuntimeDemo_copy.txt");
// 与已有文件关联。
FileReader fr = new FileReader("RuntimeDemo.java");
int ch = 0;
while ((ch = fr.read()) != -1) {
fw.write(ch);
}
fw.close();
fr.close();
}
}
字节流与字符流的转换字节流输入流转换为字符输入流InputStreamReader是字节流通向字符流的桥梁,它使用了指定的charset读取字节并将其解码字符构造方法摘要
有以下方法
字节流输出流转换为字符输出流OutputStreamWriter是字符流通向字节流的桥梁,可使用指定的charset将要写入流中的字符编码成字节。它使用的字符集可以有名称指定或显示给定,否则将接受平台默认的字符集构造方法摘要
有以下方法
文件操作类File File类用于实现对目录的创建、删除,对文件的创建、重命名、删除。因此,File类操作的对象分为两类:目录和文件。File有4个构造函数来创建一个文件对象
常见的一些方法:isDirectory();是否是目录isFile();是否是文件exists() 文件是否存在mkdir();创建一个目录mkdirs();创建所有目录creatNewFile();创建一个文件delete();删除文件或目录
总结:流操作的基本规律,通过三个明确来完成1.明确源和目的源:Inputstream Reader目的:OutputStream Writer2.操作的数据是否是纯文本是:字符流不是:字节流3.当体系明确后,就要明确要使用的是哪个对象,通过设备来区分源设备:内存,硬盘,键盘目的设备:内存,硬盘,控制台
流按操作数据分为两种:字节流与字符流。 流按流向分为:输入流,输出流。
IO流常用基类 ★字节流的抽象基类: InputStream ,OutputStream。 ★字符流的抽象基类: Reader , Writer。 注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。 如:InputStream的子类FileInputStream。 如:Reader的子类FileReader。
输入字节流InputStream InputStream的作用是标志那些从不同输入源产生的类。InputStream是所有输入字节流的抽象父类,因此不能够直接构造InputStream的实例,必须通过它的子类来进行构造。由于它是抽象类,因此提供了一些抽象接口和固有的函数实现。abstract int read(); //从输入流中读取数据的下一个字节int read(byte[] b); //从输入流中读取字节数组,并将其存储在缓冲区数组b中int read(byte[] b,int off,intlen);//将输入流中最多len个数据字节读入byte数组int available(); //返回此输入流可以读取(或跳过)的估计字节数long skip(long n); //跳过和丢弃此输入流中数据的n个字节void close(); //关闭此输入流并释放与该流关联的所有的系统资源
根据输入源的不同,共分为如下几种类型 ★ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用。 ★FileInputStream:把一个文件作为InputStream,实现对文件的读取操作。 ★ObjectInputStream:把一个对象作为InputStream,实现对文件的读取操作。 ★StringBufferInputStream:把一个String对象作为InputStream并且它还有三个特殊的实现。 ★PipeInputStream:实现了管道(Pipe)的概念,主要在线程中使用。 ★SequenceInputstream:把多个Inputstream合并为一个InputStream。 ★FilterInputStream:对输入流进行各种过滤操作FilterInputStream还有一组过滤器的具体实现 ★BufferedInputstream:缓存过滤器 ★DataInputstream:数据过滤器 ★LineNumberInputStream:行号过滤器
输出字节流OutputStream OutputStream的作用就是输出字节,并将这些字节发送到某个接收器。OutputStream表示字节流的所有类的抽象父类,因此不能够直接构造OutputStream的实例,必须通过它的子类来进行构造。由于它是抽象类,因此提供了一些抽象接口和固有的函数实现。abstract int write(int b); //将指定的字节写入此输出流void write(byte[] b); //将b.length个字节从指定的byte数组写入此输出流void write(byte[] b,int off,intlen);//将数组中从off开始的len个字节写入此输出流void flush(); //刷新此输出流并强制写出所有的缓存的输出字节void close(); //关闭此输入流并释放与该流关联的所有的系统资源
根据输出源的不同,共分为如下几种类型 ★ByteArrayOutputStream:把信息存入内存中的一个缓冲区中。 ★FileOutputStream:把信息存入文件中。 ★ObjectOutputStream:把一个对象作为OutputStream,实现对对象的写入操作。并且它还有三个特殊的实现。 ★PipeOutputStream:实现了管道(Pipe)的概念,主要在线程中使用。 ★FilterOutputStream:对输入流进行各种过滤操作FilterInputStream还有一组过滤器的具体实现 ★BufferedOutputstream:缓存过滤器 ★DataOutputstream:数据过滤器 ★PrintStream:格式化过滤器看一下复制一个图片的代码
import java.io.*; class CopyPic { public static void main(String[] args) { FileOutputStream fos = null; FileInputStream fis = null; try { fos = new FileOutputStream("c:\\2.bmp"); fis = new FileInputStream("c:\\1.bmp"); byte[] buf = new byte[1024];// 定义一个数组 int len = 0; while ((len = fis.read(buf)) != -1)// 将读取的字节存入到数组中 { fos.write(buf, 0, len); } } catch (IOException e) { throw new RuntimeException("复制文件失败"); } finally { try { if (fis != null) fis.close(); } catch (IOException e) { throw new RuntimeException("读取关闭失败"); } try { if (fos != null) fos.close(); } catch (IOException e) { throw new RuntimeException("写入关闭失败"); } } } }
输入字符流Reader Reader是用来输入字符数据,它所提供的方法跟Inputstream基本一样。Reader表示字符流的所有类的抽象父类,因此不能够直接构造Reader的实例,必须通过它的子类来进行构造。由于它是抽象类,因此提供了一些抽象接口和固有的函数实现。 abstract int read(char[] cbuf,int off,intlen);//将字符读入数组某一部分 abstract void close(); //关闭该流并释放与之关联的所有资源 int read(); //都去单个字符 int read(char[] cbuf); //将字符读入数组<
4000
div> void reset(); //重置该流 long skip(long n); //跳过字符
根据输入源的不同,共包括如下几种类型,分别与InputStream额实现类想对应。★CharArrayReader:与ByteArrayInputStream对应,用于读入内存中的字符数组★FileReader:与FileInputStream对应,用于读取文件的内容★StringReader:与StringBufferInputStream对应,用于读取字符串它还有3个特殊的实现★PipeReader:与PipeInputStream对应★BufferedReader:与BufferedInputStream对应。★FilterReader:与FilterInputStream对应BufferedReader还有一个行号的实现类★LineNumberReader:与LineNumberInputStream对应,行号读取类
输出字符流Writer Writer的作用就是输出字节,并将这些字符发送到某个接收器。Writer表示字符流的所有类的抽象父类,因此不能够直接构造Writer的实例,必须通过它的子类来进行构造。由于它是抽象类,因此提供了一些抽象接口和固有的函数实现。abstract int write(char[] cbuf,intoff,int len); //写入字符数组的某一部分void write(char[] cbuf); //写入字符数组void write(int c); //写入单个字节void write(String str) //写入单个字符串void (String str,int off,int len) //写入字符串的某一部分void flush(); //刷新该流的缓存void close(); //关闭该流,但要先刷新它
根据输出源的不同,共包括如下几种类型,分别与OutputStream的实现类相对应。★CharArrayWriter:与ByteArrayOutputstream对应,用于写入内存中的字符数组★FileWriter:与FileOutputstream对应,用于写入文件的内容★StringWriter:无与之对应的以字节为导向的Stream,用于写入内存中的字符串它还有3个特殊的实现★PipeWriter:与PipeOutputstream对应★BufferedWriter:与BufferedOutputstream对应。★FilterWriter:与FilterOutputstream对应★PrintWriter:格式化过滤器看一下代码
<div>//将C盘一个文本文件复制到D盘。</div><div></div>import java.io.*; class CopyText { public static void main(String[] args) throws IOException { copy_2(); } public static void copy_2() { FileWriter fw = null; FileReader fr = null; try { fw = new FileWriter("SystemDemo_copy.txt"); fr = new FileReader("SystemDemo.java"); char[] buf = new char[1024]; int len = 0; while ((len = fr.read(buf)) != -1) { fw.write(buf, 0, len); } } catch (IOException e) { throw new RuntimeException("读写失败"); } finally { if (fr != null) try { fr.close(); } catch (IOException e) { } if (fw != null) try { fw.close(); } catch (IOException e) { } } } <pre name="code" class="java">//从C盘读一个字符,就往D盘写一个字符。
public static void copy_1() throws IOException {
// 创建目的地。
FileWriter fw = new FileWriter("RuntimeDemo_copy.txt");
// 与已有文件关联。
FileReader fr = new FileReader("RuntimeDemo.java");
int ch = 0;
while ((ch = fr.read()) != -1) {
fw.write(ch);
}
fw.close();
fr.close();
}
}
字节流与字符流的转换字节流输入流转换为字符输入流InputStreamReader是字节流通向字符流的桥梁,它使用了指定的charset读取字节并将其解码字符构造方法摘要
有以下方法
字节流输出流转换为字符输出流OutputStreamWriter是字符流通向字节流的桥梁,可使用指定的charset将要写入流中的字符编码成字节。它使用的字符集可以有名称指定或显示给定,否则将接受平台默认的字符集构造方法摘要
有以下方法
文件操作类File File类用于实现对目录的创建、删除,对文件的创建、重命名、删除。因此,File类操作的对象分为两类:目录和文件。File有4个构造函数来创建一个文件对象
常见的一些方法:isDirectory();是否是目录isFile();是否是文件exists() 文件是否存在mkdir();创建一个目录mkdirs();创建所有目录creatNewFile();创建一个文件delete();删除文件或目录
总结:流操作的基本规律,通过三个明确来完成1.明确源和目的源:Inputstream Reader目的:OutputStream Writer2.操作的数据是否是纯文本是:字符流不是:字节流3.当体系明确后,就要明确要使用的是哪个对象,通过设备来区分源设备:内存,硬盘,键盘目的设备:内存,硬盘,控制台
相关文章推荐
- 让Adobe Reader 7.0 8.1 记住您上次阅读的位置
- 深入多线程之:Reader与Write Locks(读写锁)的使用详解
- java IO流文件的读写具体实例
- 怎样学习java,漫谈java学习之路
- 设置jdk环境变量时lib中的rt.jar ,dt.jar ,tool.jar是什么,作用是什么
- Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例
- 学习日志---treemap
- java基础知识笔记
- java.sql.Blob、byte[]、InputStream之间的相互转换
- Acrobat reader 7.0和9.0 繁体中文包 日文包 韩文包 中欧语言包 简体中文包 下载地址
- java中web应用中重定向与转发的区别
- java基础篇---枚举详解
- (非原创)RSS
- android http-post方法简单实现
- java基础数据类型包装类
- equals与null
- android 一些数据转换方法
- 装饰类设计模式 【不完善版】 IO流
- IO流操作规律 转码
- 重置标准输入输出流 IO流