11. 流输入输出 java

来源:互联网 发布:无法登陆mysql服务器 编辑:程序博客网 时间:2024/06/05 02:36

输入输出

1.    文件、网络、压缩包等数据——>数据流——>目的地 (输入模式)

源——>数据流——>文件、网络、压缩包等数据(输出模式)

输入流:从源中读出数据

输出流:向目的地写入数据

2.    字节流分为输入流InputStream(抽象类)和输出流OutputStream(抽象类),字符流分为输入流Reader(抽象类)和输出流Write(抽象类),使用的是Unicode字符。

字符流:主要用于读取文本

字节流:主要用于读取二进制文件,图片等,防止出现读取单位过大,出现误差。

3.    Java.io.File类提供了对文件的各项操作,包括创建文件对象,显示文件信息,文件操作等等。本质上是对文件路径的一种抽象。“.”代表当前目录。

4.    对于各种数据流,用完之后用close()关闭,释放系统资源。

5.    文件输入/输出流(只提供了对单个或数组的读取方法)

字节流:Java.io.FileInputStream       java.io.FileOutputStream

字符流:java.io.FileReader    java.io.FileWriter

注:对于文件输出流,若文件不存在,则自动创建文件!

6.    带缓存的输入/输出流(通过包装基本数据流达到I/O优化的目的)

原理:划分一个缓冲区数组,通过减少输入输出次数来提高读写速度。即在输入时,先将一整块数据从输入流读入缓冲区数组,然后从缓冲区数组中读数据;在输出时,先将数据写入缓冲区数组,等数组达到一定量时或调用flush()方法,整体写入输出流。

字节类:java.io.BufferedInputStream    java.io.BufferedOutputStream

字符类:java.io.BufferedReader         java.io.BufferedWriter

LineNumberReader是BufferReader的包装类,带行号的字符缓冲流。

在程序最后一定要调用flush()方法,否则不一定能保证将输出流上的所有字符(节)输出。

7.    数据流(以与机器无关的方式读写java基本类型数据,与平台无关)

Java.io.DataInputStream       jva.io.DataOutputStream

8.    对象数据流(是7中 数据流的升级版)

ObjectInputStream   ObjectOutputStream

注:

a. 只有实现了可序列化接口Serializable的对象才可写入输入流,Serializable()接口是一种标记性接口。

b. 如果对象内含有不用序列化的数据,需要将该数据声明为transient,即在写入输出流时,忽略该数据。

c. 数组本质上就是一个对象,如果数组中存储的数据都是可序列化的,那么该数组是可序列化的。

d. 对象在可序列化的过程中,会对类、实例变量、从初始对象引用的其他对象包进行编码,但是不会存储对象静态变量的值,因为该值已经隐含在类中了。

Serializable对象使用uid号对类进行标识,可在类中显示指定类的uid号。

9.    随机读写文件

具有随机访问方式,独立于字节流与字符流之外。

Java.io.RandomAccessFile

注:该类的写方法是指覆盖式写入,该类内部封装了输入流与输出流。

可使用多线程方式对文件进行分段存取(下载软件原理)

10. 分析文本文件

以令牌(单词)的形式对文件进行读取

Java.io.StreamTokenizer

11. 数组流(即数组与流之间的相互转化)

字节:Java.io.ByteArrayInputStream         ByteArrayOutputStream 

字符:CharArrayInputStream CharArrayOutputStream

12. 字节流与字符流的转换

Java.io.InputStreamReader          java.io.OutputStreamWriter

注:可按指定编码表进行转换。

13. 打印流

PrintStream、PrintWriter 

可按照指定编码方式进行打印

14. 合并流

SequenceInputStream 可将若干输入流合并到一起

15. 管道流

PipedInputStream、PipedOutputStream

可用于将输入流、输出流对接。

16. 字符串流

StringReader StringWriter

将字符串转换成流对象,对其进行操作。

17. 使用控制台输入参数文件、输出结果文件

Java  example <input.txt (存储参数的文件)>output.txt

18. *用于命令行时,代表当前路径下所有文件

Eg:java Test  *; // args数组中存储的当前路径下所有的文件名

 19. 编码

编码表:GBK(默认)、Unicode、ISO(欧洲码表)、ASCII、UTF-8(Unicode transform format— 至少8位)

除ASCII码表外,其他编码一般为负数。

 

 

  

 

0 0
原创粉丝点击