一、笔记
1.InputStream字节输入流、OutputStream字节输出流
都是抽象类
1、把硬盘的数据读取到内存中,称为输入流;
把内存的数据写入硬盘中,称为输出流
2、使用流的时候:
都是导入java.io下的jar包;
需要注意异常;
关闭流,释放资源;
2、OutputStream的常规方法:
public void close():关闭与释放资源;
public void flush():强制性刷新缓存区;
public void write(byte[] b):将字节数组中的数据写入到输出流里;
public void write(byte[] b,int off,int len):将字节数组的数据指定区间写入到输出流里;
public abstract void write(int b):将单个字节写入到输出流里;
3、OutputStream的子类为:
ByteArrayOutputStream字节输出流;
FileOutputStream文件输出流(重点);
FilterOutputStream过滤器输出流;
ObjectOutputStream对象输出流;
PipedOutputStream管道输出流
4、FileOutputStream:一般用于向文件写入数据
构造方法:
public FileOutputStream(File file);public FileOutputStream(String name);public FileOutputStream(String name,boolean append)append默认是false,表示覆盖
1. 实例化FileOutputStream的一个对象
2. 如果这个文件不存在,会默认创建这个文件
3. 把FileOutputStream指向需要写入数据的位置(文件)
写入数据的原理:
java-->jvm-->OS(操作系统)-->调用系统的写入方法
写入数据的基本步骤:
实例化对象==》调用其写入方法==》关闭资源
5、BufferedOutputStream是FilterOutputStream的直接子类,内部封装了一个字节数组(自带缓冲区)
构造方法:
public BufferedOutputStream(OutputStream out)
主要方法:
public void flush():刷新此缓冲的输出流(也就是把缓冲区的数据写入到文件里)
void write(byte[] b, int off, int len):将指定byte数组中从偏移量off开始的len个字节写入此缓冲的输出流;
void write(int b):要写入的字节的长度;
6、InputStream的常规方法:
public int available():返回的是当前输入流里的字节数;
public void close():关闭资源的方法;
public abstract int read():一个一个字节读取(返回值是读取的具体数据《内容为0-127,对应ASCAII码表,如果是其他,对应系统的编码格式返回int类型》返回-1,表示读取完毕),每调用一次,指针往后移一个单位;
public int read(byte[] b):把数组读取到字节数组里(数组就是缓冲区,一般数组长度为1024的倍数),返回值是读取的有效字符长度;
public int read(byte[] b,int off,int len):可以读取指定区间的数据,off起始位置,len长度;
7、InputStream的子类为:
ByteArrayInputStream字节输入流;
FileInputStream文件输入流;
FilterInputStream过滤器输入流;
ObjectInputStream对象输入流;
PipedInputStream管道输入流;
SequenceInputStream合并(流)输入流
8、FileInputStream:一般用于从文件中读取数据
构造方法:
public FileInputStream(File file);
public FileInputStream(String name)
步骤:
创建FileInputStream的对象
把FileInputStream对象指向需要读取的文件的位置
读取数据的原理:
java-->jvm-->OS(操作系统)-->调用系统的读取方法
(2)读取数据的基本步骤:
实例化对象==》调用其读取方法==》关闭资源
9、BufferedInputStream
是FilterInputStream的直接子类,内部封装了一个字节数组(自带缓冲区)
构造方法:
public BufferedInputStream(InputStream in)
读取方法:
public int read();
public int read(byte[] b,int off,int len);
二、总结
第十八天的学习,今天学习了IO流,虽然就学习两个流,但作业做起来就十分费劲,看来知识点不够扎实,要回去多复习前面的知识了。加油干!