一)
IO流(输入流、输出流)
字节流、字符流
1、InputStream
2、OutputStream
二)
EOF=End 读到-1就读到结尾
三)
输入流基本方法
int b = in.read(); 读取一个字节无符号填充到int低八位.-1是EOF
in.read(byte[] buf)
in.read(byte[] buf, int start, int size)
四) 输出流基本方法
out.write(int b) 写出一个byte到流,b的低8位
out.write(byte[] buf)将buf字节数组都写入到流
out.wirte(byte[] buf,int start, int size)
五) FileInputStream 文件输入流 -->具体实现了在文件上读取数据
FileInputStream
从文件系统中的某个文件中获得输入字节。
FileInputStream
用于读取诸如图像数据之类的原始字节流。要读取字符流,
FileInputStream(File file)
FileInputStream(String name)
/*单字节读取 */
public int read() throws IOException
- 从此输入流中读取一个数据字节。如果没有输入可用,则此方法将阻塞。
public void close() throws IOException
-
关闭此文件输入流并释放与此流有关的所有系统资源。
如果此流有一个与之关联的通道,则关闭该通道。
-
-
/*批量读取 */
-
public int read(byte[] b, int off, int len) throws IOException
-
从此输入流中将最多
len
个字节的数据读入一个 byte 数组中。如果len
不为 0,则在输入可用之前,该方法将阻塞;否则,不读取任何字节并返回0
。
-
从此输入流中将最多
-
六)FileOutputStream 文件输出流 -->实现了向文件写出byte数据的方法
文件输出流是用于将数据写入 File
或 FileDescriptor
的输出流
public FileOutputStream(String name) throws FileNotFoundException
-
创建一个向具有指定名称的文件中写入数据的输出文件流。创建一个新
FileDescriptor
对象来表示此文件连接。 -
-
public FileOutputStream(String name, boolean append) throws FileNotFoundException
-
创建一个向具有指定
name
的文件中写入数据的输出文件流。如果第二个参数为true
,则将字节写入文件末尾处,而不是写入文件开始处。创建一个新FileDescriptor
对象来表示此文件连接。
public void write(byte[] b) throws IOException
-
将
b.length
个字节从指定 byte 数组写入此文件输出流中。
public void write(byte[] b, int off, int len) throws IOException
-
将指定 byte 数组中从偏移量
off
开始的len
个字节写入此文件输出流。 -
-
-
close()
关闭此文件输出流并释放与此流有关的所有系统资源。
七) DataInputStream / DataOutputStream 数据输入输出流
对“流”功能的扩展,可以更加方便的读取int,long,字符等类型数据
DataOutputStream
writeInt(int v)、
writeDouble(double v)、
writeUTF(String str)
DataOutputStream(OutputStream out)
创建一个新的数据输出流,将数据写入指定基础输出流。
DataInputStream
DataInputStream(InputStream in)
readUTF()
八)字节缓冲流 BufferedInputStream / BufferedOutputStream
这两个流类中位IO提供了带缓冲区的操作,一般打开文件进行读写操作时,都加上缓冲,提高IO性能
BufferedInputStream(InputStream in, int size)
创建具有指定缓冲区大小的 BufferedInputStream
并保存其参数,即输入流 in
,以便将来使用。
BufferedOutputStream(OutputStream out, int size)
创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。