javaSE 第十七天

Day17

 ----------------------------------------------------------------------------------

今天内容:

   (1)I/O流

1.I/O流

1.1 基本概念

   I/O就是Input/Output的含义,也就是输入/输出的含义。

   I/O流就是指像流水一样不间断地进行输入输出的过程。

1.2 基本分类

   以读写数据的基本单位不同分为:字节流 和 字符流。

   其中字节流主要指以字节为单位进行读写的流,可以读写任意类型的文件。

   其中字符流主要指以字符(2个字节)为单位进行读写的流,只能读写文本文件。

   以数据流动的方向不同分为:输入流 和 输出流(站在程序的角度)。

   其中输入流主要指从硬盘中的文件读取数据输入到程序中。

   其中输出流主要指将程序中的数据输出到文件中,也就是写文件。

1.3 基本框架

   字节流的顶层父类:InputStream类 和 OutputStream类     - 抽象类

   其中InputStream类的主要子类:

       FileInputStream类、DataInputStream类、ObjectInputStream类。

   其中OutputStream类的主要子类:

       FileOutputStream类、DataOutputStream类、ObjectOutputStream类。

   

   字符流的顶层父类:Reader类 和 Writer类                - 抽象类

   其中Reader类的主要子类:

       BufferedReader类、InputStreamReader类(转换流)。

   其中Writer类的主要子类:

       BufferedWriter类、OutputStreamWriter类(转换流)。

补充:

   java.io.PrintStream类是OutputStream类的间接子类。

1.4 FileOutputStream类(重中之重)

(1)基本概念

   java.io.FileOutputStream类主要用于将图像数据之类的原始字节流写入输出流中。

   

(2)常用的方法

   FileOutputStream(String name) - 根据参数指定的文件名来构造对象。

   FileOutputStream(String name, boolean append) - 以追加的方式根据文件名来构造对象

   void write(int b) - 用于将参数指定的单个字节写入输出流中。

   void write(byte[] b, int off, int len) 

       - 用于将数组b中从下标off位置开始的len个字节写入输出流中。

   void write(byte[] b) - 用于将数组b中的所有字节写入输出流中。

   void close() - 关闭输出流并释放有关的资源。

1.5 FileInputStream类(重中之重)

(1)基本概念

   java.io.FileInputStream类主要用于从输入流中读取图像数据之类的原始字节流。

(2)常用的方法   

   FileInputStream(String name) - 根据参数指定的文件名来构造对象。

   int read() - 用于从输入流中读取单个字节。

       - 成功返回实际读取的数据内容,若返回-1则表示读到文件末尾。

   int read(byte[] b, int off, int len) 

       - 用于从输入流中读取len个字节放入数组b中从off开始的位置。

       - 成功返回实际读取的数据大小,若返回-1则表示读到文件末尾。

   int read(byte[] b) 

       - 用于从输入流中读取b.length个字节的数据放入数组b中。

   int available() - 用于通过输入流获取文件的大小。

   void close() - 用于关闭流对象并释放有关的资源。

     

1.6 DataOutputStream类(查手册会用即可)

(1)基本概念

   java.io.DataOutputStream类主要用于将Java中基本数据类型的变量写入输出流。

(2)常用的方法

   DataOutputStream(OutputStream out) - 根据参数指定的引用来构造对象。

        - 其中OutputStream类是个抽象类,实参需要传递子类对象形成多态。

   void writeInt(int v) - 用于将参数指定的整数按照四字节方式写入输出流,先写高字节

        - 如:127  => 0000 0000   0000 0000   0000 0000   0111 1111

                         高                =>                 低

   void close() 

1.7 DataInputStream类(查手册会用即可)

(1)基本概念

   java.io.DataInputStream类主要用于从输入流中读取Java中基本数据类型的数据。

(2)常用的方法

   DataInputStream(InputStream in) - 根据参数指定的引用来构造对象。

       - 其中InputStream类是个抽象类,实参需要传递子类的对象形成多态。

   int readInt() - 用于从输入流中读取一个整数并返回。

   void close()

1.8 BufferedWriter类(重点)

(1)基本概念

   java.io.BufferedWriter类用于写入单个字符、字符数组以及字符串到输出流中。

(2)常用的方法    

   BufferedWriter(Writer out) - 根据参数指定的引用来构造对象。

       - 其中Writer类是个抽象类,实参需要传递子类对象形成多态。

   void write(int c) - 用于写入单个字符。

   void write(char[] cbuf, int off, int len)  

       - 用于将字符数组cbuf中从下标off开始的len个字符写入输出流中。

   void write(char[] cbuf) - 用于写入整个字符数组的内容。

   void write(String str) - 用于写入整个字符串的内容。

   void newLine() - 用于写入一个行分隔符。

   void close()

1.9 BufferedReader类(重点)

(1)基本概念

   java.io.BufferedReader类用于从输入流中读取单个字符、字符数组以及字符串。

(2)常用的方法

   BufferedReader(Reader in) - 根据参数指定的引用来构造对象。

       - 其中Reader类是个抽象类,实参需要传递子类对象形成多态。

   int read() - 用于读取单个字符。

   int read(char[] cbuf, int off, int len) 

       - 用于读取len个字符存放到数组cbuf中下标从off开始的位置。

   int read(char[] cbuf) - 用于读满整个字符数组。

   String readLine() - 用于读取一行字符串。

   void close() 

作业:

   1.总结和绘制IO流相关类的关系图。

   2.不断地提示用户输入要发送的内容,若发送的内容是"bye"则聊天结束,

     否则将用户输入的内容写入到文件c:/a.txt中。

     要求使用BufferedReader类来读取键盘的输入   System.in代表键盘输入

     要求使用BufferedWriter类负责将数据写入文件   

猜你喜欢

转载自blog.csdn.net/zgzdcxy/article/details/82804417