黑马程序员--JAVA基础知识--IO流

来源:互联网 发布:从来绝色知难得打一字 编辑:程序博客网 时间:2024/05/23 23:02

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

                                                                                                                     JAVA自学第十期

  IO流,基本上有关于文件的文字的字符的流动都要进过IO流,可见IO流的强大。接下来我们将学习IO流的基本知识。


IO(Input Output)流

1.IO流用来处理设备之间的数据传输
2.Java对数据的操作是通过流的方式
3.Java用于操作流的对象都在IO包中
4.流按操作数据分为两种:字节流与字符流 。
5.流按流向分为:输入流,输出流。


IO流常用基类

字节流的抽象基类:
InputStream ,OutputStream。


字符流的抽象基类:
Reader ,Writer。


注:由这四个类派生出来的子类名称都是 以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。


IO程序的书写

导入IO包中的类
进行IO异常处理
在finally中对流进行关闭


字符流——创建文件

创建流对象,建立数据存放文件
FileWriter fw = new FileWriter(“Test.txt”);


调用流对象的写入方法,将数据写入流
fw.write(“text”);


关闭流资源,并将流中的数据清空到文件中。
fw.close();
不写close方法会有什么结果呢?
如果想在原有文件上继续加入新的数据呢?


完整代码


字符流——读取文件

建立一个流对象,将已存在的一个文件加载进 流。
FileReader fr = new FileReader(“Test.txt”);


创建一个临时存放数据的数组。
char[] ch = new char[1024];

调用流对象的读取方法将流中的数据读入到数组 中。
fr.read(ch);

完整代码


注意:

1.定义文件路径时,可以用“/”或者“\\”。
2.在创建一个文件时,如果目录下有同名文 件将被覆盖。
3.在读取文件时,必须保证该文件已存在, 否则出异常。


字符流的缓冲区

缓冲区的出现提高了对数据的读写效率。
对应类
BufferedWriter
BufferedReader
缓冲区要结合流才可以使用。
在流的基础上对流的功能进行了增强。


装饰设计模式

对原有类进行了功能的改变,增强。
装饰模式的基本格式。
它与继承有什么不同?
了解BufferedReader的原理。


字节流

基本操作与字符流类相同
但它不仅可以操作字符,还可以操作其他 媒体文件


转换流

InputStreamReader,OutputStreamWriter
转换流的由来
    字符流与字节流之间的桥梁
    方便了字符流与字节流之间的操作
转换流的应用
    字节流中的数据都是字符时,转成字符流操作更高效。


标准输入输出流

1.System类中的字段:in,out。
2.它们各代表了系统标准的输入和输出设备。
3.默认输入设备是键盘,输出设备是显示器。
4.System.in的类型是InputStream.
5.System.out的类型是PrintStream是OutputStream的子类FilterOutputStream 的子类.


标准输入输出流示例

例:获取键盘录入数据,然后将数据流向显示器,那么显示器就是目的地。
通过System类的setIn,setOut方法对默认设备进行改变。
    System.setIn(new FileInputStream(“1.txt”));//将源改成文件1.txt。
    System.setOut(new FileOutputStream(“2.txt”));//将目的改成文件2.txt
因为是字节流处理的是文本数据,可以转换成字符流,操作更方便。
BfferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw =
new BufferedWriter(new OutputStreamWriter(System.out));


流的基本应用小节

1.流是用来处理数据的。
2.处理数据时,一定要先明确数据源,与数据目的 地(数据汇)。
3.数据源可以是文件,可以是键盘。
4.数据目的地可以是文件、显示器或者其他设备。
5.而流只是在帮助数据进行传输,并对传输的数据进行处理,比如过滤处理.转换处理等。


IO包中的其他类

RandomAccessFile
     随机访问文件,自身具备读写的方法。
     通过skipBytes(int x),seek(int x)来达到随机访问。
管道流
     PipedInputStream和PipedOutputStream
     输入输出可以直接进行连接,通过结合线程使用。

打印流
    PrintWriter与PrintStream
    可以直接操作输入流和文件。
序列流
    SequenceInputStream
    对多个流进行合并。
操作对象
    ObjectInputStream与ObjectOutputStream
    被操作的对象需要实现Serializable (标记接口);

操作基本数据类型
    DataInputStream与DataOutputStream
操作字节数组
    ByteArrayInputStream与ByteArrayOutputStream
操作字符数组
    CharArrayReader与CharArrayWrite
操作字符串
    StringReader 与StringWriter


字符编码

字符流的出现为了方便操作字符。
更重要是的加入了编码转换。
通过子类转换流来完成。
    InputStreamReader
   OutputStreamWriter
在两个对象进行构造的时候可以加入字符 集。


以上为IO流的全部基础知识,其中转换流和4个基本IO流一定要能随时默写下来,其他的如管道流之类的只要熟悉一下用法就好,要求没有那么高。第了,还有字符缓冲区也是必须掌握的对象。

0 0