第十周课程总结
Java I/O:
在IO中涉及的设备文件包括文件、控制台、网络链接等,这其中又根据流的方向可以将两端的设备文件分为数据源对象和接收端对象:
数据源对象:有能力产出数据
接收端对象:有能力接收数据
而IO流实际上屏蔽了在实际设备中的处理数据的细节,这些处理方式也叫通信方式可以包括顺序、随机存取、缓冲、二进制、按字符、按字节、按行等。
一、io流的三种分类方式
1.按流的方向分为:输入流和输出流
2.按流的数据单位不同分为:字节流和字符流
3.按流的功能不同分为:节点流和处理流
三.字节流与字符流
一.操作主要方法
(1)使用File类打开一个文件
(2)通过字节流或字符流的子类指定输出的位置
(3)进行读/写操作
(4)关闭输入/输出
outputString类常用方法
方法或常量 | 类型 | 描述 |
public void close() throws IOException | 普通 | 关闭输出流 |
public void flush() throws IOException | 普通 | 刷新缓存区 |
public void write(byte[] b)throws IOException | 普通 | 将一个byte数组写入数据流 |
public void write(byte[] b,int off,int len throws) IOException |
普通 | j将一个指定范围的byte数组写入数据流 |
public abstract void write(int b)throws IOException | 普通 | 将一个字节流数据写数据流 |
InputStream类常用方法
方法或常量 | 类型 | 描述 |
public void available() throws IOException | 普通 | 可以取得输入文件的大小 |
public void close() throws IOException | 普通 | 关闭输入流 |
public abstract int read() throws IOException | 普通 | 读取内容,以数字的方式读取 |
public int read(byte[] b)throws IOException | 普通 | 将内容读到byte数组之中,同时返回读入的个数 |
write类的操作方法
方法或常量 | 类型 | 描述 |
public abstract void close() throws IOException | 普通 | 关闭输出流 |
public void write (String str)throws IOException | 普通 | 将字符串输出 |
public void write (char[] cbuf)throws IOException | 普通 | 将字符数组输出 |
public abstract void flush() throws IOException | 普通 | 强制性清空缓存 |
Reader类的常用方法
方法或常量 | 类型 | 描述 |
public abstract void close() throws IOException | 普通 | 关闭输出流 |
public int read() throws IOException | 普通 | 读取单个字符 |
public int read(char[] cbuf)throws IOException | 普通 | 将内容读到字符数组之中,返回读入的长度 |
管道流:
管道流的主要作用是可以进行两个线程间的通讯,分为管道输入流(PipeOutputStream)和管道输出流(PipeInputStream)。
如果要想进行管道输出,则必须把输出流连在输入流之上,在PipeOutputStream上有如下方法用于连接管道。
void connect(PipedInputStream snk)
将此管道输出流连接到接收者。
要想连接输入和输出,必须使用此方法、
PipeOutputStream输出方法:
void write(byte[] b, int off, int len)
将 len 字节从初始偏移量为 off 的指定 byte 数组写入该管道输出流。
PipeInputStream输入方法:读取文件的方法
将连接的PipeOutputStream对象实例的输入流的数据,通过read方法,把内容读取到数组中。
int read(byte[] b, int off, int len)
将最多 len 个数据字节从此管道输入流读入 byte 数组。
打印流:
打印流只能是输出流:
PrintStream: 字节打印流
PrintWriter: 字符打印流
-对于PrintWriter来说,当启用字段刷新之后,
调用println或者printf或者format方法,便会立马刷新操作(自动刷新).
如果没有开启自动刷新,则需要手动刷新或者当缓冲区满的时候,再自动刷新.(或直接调用close()方法,会自动刷新)
System类:
System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。
由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。
标准输入输出, 如out、in、err
外部定义的属性和环境变量的访问,如getenv()/setenv()和getProperties()/setProperties()
加载文件和类库的方法,如load()和loadLibrary()、
快速拷贝数组的方法:arraycopy()
jvm操作:如gc()、runFinalization()、exit(),该部分并未在源码的java doc中提到,可能因为本身不建议主动调用吧。而且这几个方法都仅仅是Runtime.getRuntime()的调用,两者没有区别
获取时间方法:System.nanoTime 和 System.currentTimeMillis