IO流

(三)Java IO 的一般使用原则 :  

一、按数据来源(去向)分类:

1 、是文件: FileInputStream, FileOutputStream, ( 字节流 )FileReader, FileWriter( 字符 )

2 、是 byte[] : ByteArrayInputStream, ByteArrayOutputStream( 字节流 )

3 、是 Char[]: CharArrayReader, CharArrayWriter( 字符流 )

4 、是 String: StringBufferInputStream, StringBufferOuputStream ( 字节流 )StringReader, StringWriter( 字符流 )

5 、网络数据流: InputStream, OutputStream,( 字节流 ) Reader, Writer( 字符流 )


二、按是否格式化输出分:

1 、要格式化输出: PrintStream, PrintWriter


三、按是否要缓冲分:

1 、要缓冲: BufferedInputStream, BufferedOutputStream,( 字节流 ) BufferedReader, BufferedWriter( 字符流 )


四、按数据格式分:

1 、二进制格式(只要不能确定是纯文本的) : InputStream, OutputStream 及其所有带 Stream 结束的子类

2 、纯文本格式(含纯英文与汉字或其他编码方式); Reader, Writer 及其所有带 Reader, Writer 的子类


五、按输入输出分:

1 、输入: Reader, InputStream 类型的子类

2 、输出: Writer, OutputStream 类型的子类


六、特殊需要:

1 、从 Stream 到 Reader,Writer 的转换类: InputStreamReader, OutputStreamWriter

2 、对象输入输出: ObjectInputStream, ObjectOutputStream

3 、进程间通信: PipeInputStream, PipeOutputStream, PipeReader, PipeWriter

4 、合并输入: SequenceInputStream

5 、更特殊的需要: PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader

决定使用哪个类以及它的构造进程的一般准则如下(不考虑特殊需要):

首先,考虑最原始的数据格式是什么: 原则四

第二,是输入还是输出:原则五

第三,是否需要转换流:原则六第 1 点

第四,数据来源(去向)是什么:原则一

第五,是否要缓冲:原则三 (特别注明:一定要注意的是 readLine() 是否有定义,有什么比 read, write 更特殊的输入或输出方法)

第六,是否要格式化输出:原则二

 

 

1.基本概念

 

IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。

New File:

1.常用方法分析:

.exists, .mkdirs, .mkdir, .createNewFile, .getparentFile, .list , .isDirect,   

2.关于过滤器FilenameFilter , 匿名内部类筛选String name-- true->String,              endsWith

3.方法封装-》递归

New FileOutputStream, New FileInputStream

BufferedInputStream,BufferedOutputStream:

1.常用方法分析:

.write, .close, .read   ---String.getBytes

2.FileOutputStream, FileWrite后参数可以加true追加,FileInputStream如果没文件不能运行,输出则可

3.认识到了错误提示也是人定义的,java虚拟机内容

4.人造容器和系统自带容器

InputStreamReader, OutputStreamWriter

BufferedReader, BufferedWriter

ObjectInputStream, ObjectOutputStream

FileReader,FileWriter  括号里面可以直接加文件,也可以FileInputStream

1.常用方法分析:

.readLine, .newLine                                                        ------String.toCharArray

2.serivalVersionUID ,Serivalizable, --short: .writeInt, .writeUTF, .writeObject, .readObject, .readInt

括号跟fileInputStream,    使用static  and   transient  不会被显示

PrintStream, PrintWriter

System.in, System.out

System.setIn, System.setOut

1.常用方法分析:

.print, .println,

2.区别分析

Pri 只能放字节流, last 能放字节字符流

3.重定向流改变标准流,控制台和文件, 文件到程序  out打印流, in字节流

byteArrayInputStream, byteArrayOutputStream

RandomAccessFile, (on file, r or rw)

1.常用方法分析:

.toByteArray, .seek, .getFilePointer

2.特性总结:

内存流不能被关闭,随机访问流因为指针获得了断点续传的功能

Nio

FileChannel, mappedByteBuffer,

1.特性分析:

三大概念:缓冲区Buffered, 通道Channel, 选择器Selector

缓冲区三大要素:指针, 限制, 容量

顺序:Bio Nio(通道, 缓冲区, 指针反转, 关流)

限制存在的意义:跟反转一起,满足取值只能在指针之间

2.常用方法分析:

.getChannel, .allocate, .read, .write, .allocate, .flip, .clear, .position, .limit, .capacity,.remaining,

.get, .map, .READ_ONLY, .READ_WRITE

 

原文地址:https://www.cnblogs.com/jwlxtf/p/7880471.html