Java核心API -- 11(IO流)

1. IO流

1)根据方向分为:

输入流和输出流。方向的定了是基于我们的程序的。流向我们程序的流叫做:输入流;从程序向外流的叫做:输出流

2)流根据源头分为:

基本流(节点流):从特定的地方读写的流类,如磁盘或一块内存区域。即有来源。

处理流(高级流、过滤流):没有数据来源,不能独立存在,它的存在是用于处理基本流的。是使用一个已经存在的输入流或输出流连接创建的。

3)流根据处理的数据单位不同划分为:

字节流:以一个“字节”为单位,以Stream结尾

字符流:以一个“字符”为单位,以Reader/Writer结尾

2. 基本字节流FileInputStream和FileOutputStream

用于读写文件的字节流FIS/FOS(基本流)

1)FileInputStream:文件字节输入流

FileInputStream 常用构造方法:

① FileInputStream(File file):通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的File对象file指定。即向file文件中写入数据。

② FileInputStream(String filePath):通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的文件路径名指定。也可直接写当前项目下文件名。

常用方法:

① int read(int d):读取int值的低8位。

② int read(byte[] b):将b数组中所有字节读出,返回读取的字节个数。

③ int read(byte[] b,int offset,int length):将b数组中offset位置开始读出length个字节。

④ available()方法:返回当前字节输入流 可读取的总字节数。

2)FileOutputStream:文件字节输出流

FileOutputStream常用构造方法:

① FileOutputStream(File File):创建一个向指定File对象表示的文件中写入数据的文件输出流。会重写以前的内容,向file文件中写入数据时,若该文件不存在,则会自动创建该文件。

② FileOubputStream(File file,boolean append):append为true则对当前文件末尾进行写操作(追加,但不重写以前的)。

③ FileOubputStream(String filePath):创建一个向具有指定名称的文件中写入数据的文件输出流。前提路径存在,写当前目录下的文件名或者全路径。

④ FileOubputStream(String filePath,boolean append):append为true则对当前文件末尾进行写操作(追加,但不重写以前的)。

常用方法:

① void write(int d):写入int值的低8位。

② void write(byte[] d):将d数组中所有字节写入。

③ void write(byte[] d,int offset,int length):将d数组中offset位置开始写入length个字节。



案例22:



3. 缓冲字节流BufferedInputStream和BufferedOutputStream

1)BufferedInputStream:缓冲字节输入流,构造器需要传入基本字节输入流BufferedInputStream(InputStream in)

常用方法:

① int read():从输入流中读取一个字节。

② int read(byte[] b,int offset,int length):从此字节输入流中给定偏移量offset处开始将各字节读取到指定的 byte 数组中。

2)BufferedOutputStream:缓冲字节输出流,构造器需要传入基本字节输出流BufferedOutputStream(OutputStream out)

常用方法:

① void write(int d):将指定的字节写入此缓冲的输出流。

② void write(byte[] d,int offset,int length):将指定 byte数组中从偏移量 offset开始的 length个字节写入此缓冲的输出流。

③ void flush():将缓冲区中的数据一次性写出,“清空”缓冲区。

3)缓冲流内部维护着一个缓冲区,每次都尽可能的读取更多的字节放入到缓冲区,再将缓冲区中的内容部分或全部返回给用户,因此可以提高读写效率。

4)有缓冲效果的流,一般为写入操作的流,在数据都写完后一定要flush,flush的作用是将缓冲区中未写出的数据一次性写出:bos.flush();即不论缓存区有多少数据,先写过去,缓冲区再下班~确保所有字符都写出

5)使用JDK的话,通常情况下,我们只需要关闭最外层的流。



案例23:



4. 转换流InputStreamReader和OutputStreanWriter

以“单个字符”为单位读写数据,一次处理一个字符(unicode)。 字符流底层还是基于字节形式读写的,所以都是将字节流转成字符流。在字符输入输出流阶段,进行编码修改与设置。

所有字符流都是高级流。

1)InputStreamReader:字符输入流。

A.常用构造方法:

InputStreamReader(InputStream in):创建一个字符集的输入流。

InputStreamReader(InputStream in, String charsetName):创建一个使用指定字符集的输入流。

B.常用方法:

① int read():读取单个字符。

② int read(char cs[], int offset, int length):读入字符数组中从offset开始的length长度的字符。

③ void close():关闭流。

2)OutputStreamWriter:字符输出流

A.常用构造方法:

OutputStreamWriter(OutputStream out):创建一个字符集的输出流。

OutputStreamWriter(OutputStream out, String charset):创建一个使用指定字符集的输出流。

B.常用方法:

① void write(int c):写入单个字符。

② void write(char c[], int off, int len):写入从字符数组off开头到len长度的部分

③ void write(String str, int off, int len):写入从字符串off开头到len长度的部分。

④ void flush():将缓冲区中的数据一次性写出,“清空”缓冲区。

⑤ void close():关闭流。

5. 缓冲字符流BufferedReader和BufferedWriter

可以以“行”为单位读写“字符”,高级流。 在字符输入输出流修改编码。

1)BufferedReader:缓冲字符输入流,以行为单位读字符

A.常用构造方法:

BufferedReader(Reader in):创建一个使用默认大小的缓冲字符输入流。

BufferedReader(Reader in, int size):创建一个使用指定大小的缓冲字符输入流。

B.常用方法:

① int read():读取单个字符。如果已到达流末尾,则返回-1。

② int read(char cbuf[], int off, int len):从字符数组中读取从off开始的len长度的字符。返回读取的字符数,如果已到达流末尾,则返回-1。

③ String readLine():读取一个文本行。通过下列字符之一即可认为某行已终止:换行 (‘\n‘)、回车 (‘\r‘) 或回车后直接跟着换行。如果已到达流末尾,则返回 null。EOF:end of file文件末尾。

④ void close():关闭流。



案例24:



案例25:



2)BufferedWriter:缓冲字符输出流,以行为单位写字符

A.常用构造方法:

BufferedWriter(Writer out):创建一个使用默认大小的缓冲字符输出流。

BufferedWriter(Writer out, int size):创建一个使用给定大小的缓冲字符输出流。

B.常用方法:

① void write(int c):写入单个字符。

② void write(char[] c,int off,int len):写入字符数组从off开始的len长度的字符。

③ void write(String s,int off,int len):写入字符串中从off开始的len长度的字符。

④ void newLine():写入一个行分隔符。

⑤ flush():将缓冲区中的数据一次性写出,“清空”缓冲区。

⑥ close():关闭流。



案例26:



6. PrintWriter输出流

是另一种缓冲“字符”输出流,以“行”为单位,常用它作输出,BufferedWriter用的少。

1)Servlet:运行在服务器端的小程序,给客户端发送相应使用的输出流就是PrintWriter。

2)写方法:println(String data):带换行符输出一个字符串,不用手动换行了。

3)构造方式:

PrintWriter(File file):以行为单位向文件写数据

PrintWriter(OutputStream out):以行为单位向字节输出流写数据

PrintWriter(Writer writer):以行为单位向字符输出流写数据

PrintWriter(String fileName):以行为单位向指定路径的文件写数据

4)常用方法

使用上和BufferedWriter一样,只是使用println()会自动换行。



案例27:



本文出自 “永远年轻” 博客,请务必保留此出处http://kingkongzhao.blog.51cto.com/6319491/1672929

时间: 2024-11-10 12:08:56

Java核心API -- 11(IO流)的相关文章

Java socket中关闭IO流后,发生什么事?(以关闭输出流为例)

声明:该博文以socket中,关闭输出流为例进行说明. 为了方便讲解,我们把DataOutputstream dout = new DataOutputStream(new BufferedOutputStream(mySocket.getOutputStream()));中的dout做为Socket输出流的代言.同样的,din是输入流的代言. 可以造成dout被关闭的操作有: 1.调用dout.close();或din.close();因为使用这种流关闭,会造成socket被关闭,所以输入输出

Java实现文件写入——IO流(输入输出流详解)

输入输出的重要性:     输入和输出功能是Java对程序处理数据能力的提高,Java以流的形式处理数据.流是一组有序的数据序列,根据操作的类型,分为输入流和输出流. 程序从输入流读取数据,向输出流写入数据.Java是面向对象的程序语言,每一个数据流都是一个对象,它们提供了各种支持“读入”与“写入”操作的流类. Java的输入输出功能来自java.io 包中的InputStream类.OutputStream类.Reader类和Writer类以及继承它们的各种子类. (一)解析文件处理的奥秘 1

java文件操作(IO流)

一.引言 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程的一个基本能力.本章IO类的使用就从读写文件开始. 文件操作 文件(File)是 最常见的数据源之一,在程序中经常需要将数据存储到文件中,例如图片文件.声音文件等数据文件,也经常需要根据需要从指定的文件中进行数据的读取.当然, 在实际使用时,文件都包含一个的格式,这个格式需要程序员根据需要进行设计,读取已有的文件

Java核心API需要掌握的程度

分类: java技术2009-08-29 01:03 213人阅读 评论(0) 收藏 举报 javaapiswingxmlio Java的核心API是非常庞大的,这给开发者来说带来了很大的方便,经常人有评论,java让程序员变傻. 但是一些内容我认为是必须掌握的,否则不可以熟练运用java,也不会使用就很难办了. 1.java.lang包下的80%以上的类的功能的灵活运用. 2.java.util包下的80%以上的类的灵活运用,特别是集合类体系.正规表达式.时间.属性.和Timer. 3.jav

Java笔记(20):IO流(02)

1.递归概述和注意事项 /* * 递归:方法定义中调用方法本身的现象 * * 方法的嵌套调用,这不是递归. * Math.max(Math.max(a,b),c); * * public void show(int n) { * if(n <= 0) { * System.exit(0); * } * System.out.println(n); * show(--n); * } * * 注意事项: * A:递归一定要有出口,否则就是死递归 * B:递归的次数不能太多,否则就内存溢出 * C:构

Java笔记(22):IO流(04)

1.登录注册案例IO版实现 在笔记17中的登录注册代码中,只需要修改注册登录的实现类 1 package cn.itcast.dao.impl; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileNotFoundException; 7 import java.io.FileReader; 8 import java.io.

Java笔记(19):IO流(01)

1.try...catch的方式处理异常1 1 package cn.itcast_02; 2 3 /* 4 * 异常:程序出现了不正常的情况. 5 * 6 * 程序的异常:Throwable 7 * 严重问题:Error 我们不处理.这种问题一般都是很严重的,比如说内存溢出. 8 * 问题:Exception 9 * 编译期问题:不是RuntimeException的异常 必须进行处理的,因为你不处理,编译就不能通过. 10 * 运行期问题:RuntimeException 这种问题我们也不处

java高级特性之IO流

缓冲流 转换流 对象流 打印流 标准输入输出流 随机访问流 数组流 有关flush():所有的处理流的输出流,最外层流需要刷新. javaIO流 1认识File类 File类的对象表示一个文件或者一个文件目录 绝对路径:包含盘符的文件完整路径 相对路径:在当前路径下的文件路径 File类中的方法,涉及到文件或文件目录的新建.删除.获取文件的路径.获取文件的大小.并没有涉及到向文件中写入或读出内容.这样的读取或写入的功能就需要IO流来完成 一般通过将File类的对象作为参数传递到流的构造器中,作为

java(九)IO流

IO流: IO流是用来处理设备之间的数据传输的. java对数据的操作是通过流的方式. java用于操作流的对象都在IO包中. 流按操作的数据分为两种:字符流和字节流. 字符流的由来:字符流其实就是字节流读取文字字节数据后,不直接操作而是先查指定的编码表,  获取对应的文字.再对这个文字进行操作. 简单说,就是字符流=字节流+编码表. 字节流的抽象基类(就是顶层父类):InputStream,OutputStream 字符流的抽象基类:Reader,Writer 这些体系的子类都以父类名作为后缀