Java-IO流-笔记

为什么要抄这些东西?
–因为今天是圣诞节.

InputStream是所有字节输入流的超类
继承关系:
InputStream
FileInputStream
PipedInputStream
FileInputStream
LineNumberInputStream
DataInputStream
BufferedInputStream
PushbackInputStream
ByteArrayInputStream
SequennceInputStream
StringBufferedStream
ObjectInputStream
基本方法:
//read方法返回实际读取的字节数,到达文件结尾返回-1
int read() throws IOEx
返回:
下一个数据字节;如果已到达文件末尾,则返回 -1。

	int read(byte[] buffer) throws IOEx
		从此输入流中将最多 b.length 个字节的数据读入一个 byte 
		数组中。在某些输入可用之前,此方法将阻塞。 
		返回:
		读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回-1

	int read(byte[] buffer, int offset, int length) throws IOEx
		读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回-1

	void close() throw IOEx

OutputStream是所有输出字节流的的超类
继承关系:
OutputStream
FileOutputStream
PipedOutputStream
FileOutputStream
DataOutputStream
BufferedOutPutStream
PrintStream
ByteArrayOutputStream
ObjectOutputStream
基本方法:
void write(int b) throws IOEx
将指定的字节写入此输出流
write 的常规协定是:向输出流写入一个字节。要写入的字节是参数 b
的八个低位。 b 的 24 个高位将被忽略。
void write(byte[] b) throws IOEx
将 b.length 个字节从指定的 byte 数组写入此输出流。 write(b)
的常规协定是:应该与调用 write(b, 0, b.length) 的效果完全相同。
void write(byte[] b, int offset, int length) throws IOEx
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
write(b, off, len) 的常规协定是:将数组 b
中的某些字节按顺序写入输出流;元素 b[off]
是此操作写入的第一个字节, b[off+len-1]
是此操作写入的最后一个字节。
void flush() throws IOEx
void close() throws IOEx
Reader是读取字符流的抽象类
基本方法:
int read() throws IOEx
返回:作为整数读取的字符
int read(char[] cbuf) throws IOEx
将字符读入数组。
返回:读取的字符数
int read(char[] cbuf, int offset, int length) throws IOEx
将字符读入数组的某一部分
offset - 开始存储字符处的偏移量
返回:读取的字符数
void close() throws IOEx

Writer也是抽象类
基本方法:
void write(int c) throws IOEx
void write(char[] cbuf) throws IOEx
void write(char[] cbuf, int offset, int length) throws IOEx
void write(String string) throws IOEx
void write(String string, int offset, int length) throws IOEx
void close() throws IOEx
void flush() throws IOEx

8.4 节点流
8.4.1 文件和目录管理
java.io.File类
[注意]File不是流,内容是流
常用方法:
isDirectory()/isFile()/exits()
length()
boolean mkdir()/mkdirs()
boolean exist()
boolean createNewFile()
boolean delete()
getName()/getPath/getAbsolutePath()/getParent()
long lastModified()/setLastModified(long)
canRead()/canWrite()/setReadOnly()/setWritable()/isHidden()
String[] list()目录下的所有文件/目录名
boolean renameTo(File dest)
8.4.2 FileIn(Out)putStream
构造函数
FileInputStream(File file)
FileInputStream(String name) –相对路径,绝对路径
构造函数
FileOutputStream(File file)
FileOutputStream(File file, boolean append) –是否追加
FileOutputStream(String name) –相对路径,绝对路径
FileOutputStream(String name, boolean append)
8.4.3 FileReader/FileWriter
FileReader(File file)
FileReader(String name) –相对路径,绝对路径

	FileWriter(File file)
	FileWriter(File file, boolean append) –是否追加
	FileWriter(String name) –相对路径,绝对路径
	FileWriter(String name, boolean append)

8.5 处理流
类型 字符流 字节流
缓冲 BufferedReader BufferedInputStream
BufferedWriter BufferedOutputStream
过滤 FilterReader FilterInputStream
FilterWriter FilterOutputStream
字节 InputStreamReader
字符转化 OutputStreamWriter
对象序列化 ObjectInputStream
ObjectOutputStream
数据转化 DataInputStream
DataOutputStream
计算 LineNumberReader LineNumberInputStream
向前查看 PushbackReader PushbackInputStream
打印 PrintWriter PrintStream

8.5.1 数据流
作用:直接以基本数据类型为单位进行读写;提供了可以存取java基本数据类型
数据的方法
主要的类
	DataInputStream(InputStream in)
	DataOutputStream(OutputStream out)
主要方法:
	DataInputStream:
		readBoolean, readDouble, readInt
		readUTF()--读取一个unicode字符串,网络上常用
	DataOutputStream:
		writeBoolean(boolean), writeDouble, writeInt
		writeUTF(String str)

8.5.2 缓冲流
套接在相应的节点流之上,对数据的读写提供了缓冲功能
	设定缓冲区大小 new BufferedReader(Reader in, int size)
作用:提高了读写效率
主要的类:
	BufferedInputStream
	BufferedOutputStream
	BufferedReader
		String readLine()可以直接读字符串
	BufferedWriter
		void newLine()输出一个回车
8.5.4 Print流
	输出流:PrintWriter和PrintStream
	[注意]打印的都是字符串,而非原始数据类型的bytes

	PrintWriter和PrintStream的打印方法都相同
	区别(构造函数):
		PrintStream只能封装OutputStream
		PrintWriter既可以封装OutputStream类型的字节流
		也可以封装Writer类型的字符流
		PrintWriter的功能更强大

	主要方法: 打印各种数据类型,格式化输出
		print
		println
8.5.5 Object流
	对象序列化(串行化)和反序列化
		是内存空间的对象(非线性)可以转化为磁盘等空间的字节序列
	序列化的前提:类实现Serializable
		标记性接口(通知编译器,序列化过程有JVM实现)
	ObjectInputStream & ObjectOutputStream
		readObject() & writerObject()
	版本号serialVersionUID

	transient关键字
		用于修饰成员变量,序列化时不考虑此类变量

8.8 输入输出重定向
System.setIn(InputStream in)
– System.setln(new FileInputStream(“a.txt”));
System.setOut(OutputStream out)
– System.setOut(new FileOutputStream(“b.txt”));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值