一.數(shù)據(jù)操作流(操作基本類型數(shù)據(jù)的流)
可以操作基本數(shù)據(jù)類型的數(shù)據(jù)
DataInputStream
DataOutputStream
二.內(nèi)存操作流
有些時候,我們操作完畢后,未必需要產(chǎn)生一個文件,就可以使用內(nèi)存操作.
三種:
A:ByteArrayInputStream,ByteArrayOutputStream
B:CharArrayReader,CharArrayWriter
C:StringReader,StringWriter
三.打印流
字節(jié)打印流,字符打印流
特點:
A:只操作目的地,不操作數(shù)據(jù)源
B:可以操作任意類型的數(shù)據(jù)
C:如果啟動了自動刷新,在調(diào)用println()方法的時候,能夠換行并刷新
D:可以直接操作文件
PrintWriter
四.標準輸入輸出流
System類下面有兩個字段
in ?標準輸入流
out 標準輸出流
五.隨機訪問流
可以按照文件指針的位置寫數(shù)據(jù)/讀數(shù)據(jù).
RandomAccessFile
構造方法:
RandomAccessFile(String name, String mode);
mode是操作模式r:只讀? rw:讀寫,常用? 還有其他值.
六.合并流
把多個輸入流的數(shù)據(jù)寫到一個輸出流中.
SequenceInputStream(InputStream ?s1, InputStream ?s2);
SequenceInputStream(Enumeration<? extends InputStream> e);
七.序列化流
序列化:
?可以把對象寫入文本文件\網(wǎng)絡中傳輸
只需讓被序列化的對象實現(xiàn)序列化接口即可.
注意:把數(shù)據(jù)寫到文件后,再去修改類會產(chǎn)生問題,在類文件中,給出一個固定的序列化id值就可解決.
反序列化:
把流還原成對象.
八.Properties
是一個集合類.HashTable的子類
特有功能:
public ?Object ?setProperties(String key, String value);
public String ? getProperty(String key);
public Set<String> stringPropertyNames();
和IO流結合的方法:
把鍵值對形式的文件文件內(nèi)容加載到集合中.
public ?void ?load(Reader reader);
public void load(InputStream inStream);
把集合中的數(shù)據(jù)存儲到文本文件中
public ?void ?store(Writer writer,String ?comments);
public? void? store(OutputStream ?Out,String? comments);
九.NIO
JDK4出現(xiàn)的NIO,對之前的IO操作進行了優(yōu)化,提高了效率.
JDK7的NIO的使用:
Path:路徑
Paths:通過靜態(tài)的方法返回一個路徑
Files:提供常見的功能,例如:復制文本文件,把集合中的數(shù)據(jù)寫到文本文件中等.