黑马程序员_IO流学习心得

---------------------- android培训java培训、期待与您交流! ----------------------

IO流用来处理设备之间的数据传输,java对数据的操作时通过流方式

常用流的一览表:

 

字节流

字符流

输入流

输出流

输入流

输出流

两个基类

InputStream

OutputStream

 

Reader

Writer

 

文本文件的常用流

 

 

FileReader

FileWriter

其他文件的流

FileInputStream

 

FileOutputStream

 

 

 

缓冲流

BufferedInputStream

 

BufferedOutputStream

 

BufferedReader

BufferedWriter

转换流

InputStreamRead   字节通向字符的桥梁

OutputStreamWriter  字符通向字节的桥梁

读取键盘录入。

System.out:对应的是标准输出设备,控制台。

System.in:对应的标准输入设备:键盘。

IO包中的其他类

管道流

*PipedinputStreamPipedOutStream

       *输入输出可以直接进行连接,通过结合线程使用。

打印流

*PrintWriterPrintStream

       *可以直接操作输入流和文件。

序列流

 *SequenceInputStream

   *对多个流进行合并

操作对象

*ObjectInputStreamObjectOutputStream

       *被操作的对象需要实现Serializable(标记接口)

操作基本数据类型

*DataInputStreamDateOutputStream

操作字节数组

*ByteArrayInputStreamByteArrayOutputStream

操作字符数组

*CharArrayReaderCharArrayWrite

操作字符串

StringReaderStringWriter

 

 

实例与应用:

需求:在硬盘上,创建一个文件并写入一些文字数据。
找到一个专门用于操作文件的Writer子类对象。FileWriter
import java.io.*;
创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件,而且该文件被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。明确数据要存放的目的地。
public static void main(String[] args) throws IOExpression{
抛出IOExpression
FileWriter fw = new FileWriter("demo.txt");
//
写入字符串,写入到流中,不直接写入文件
fw.write("abcde");
//
刷新流对象中的缓冲中数据
fw.flush();   ××
//
关闭流资源关闭之前会刷新一次内部的缓冲中的数据,将数据刷到目的地中,和
flush区别:刷新后,流可继续使用,close刷新后,会将流关闭,将资源到底层关掉
fw.close();
fw.write("haha"); //
已关闭,会抛出异常
}

io
异常的处理方式:
import java.io.*;
class  FileWriterDemo2
{
    public static void main(String[] args)
    {
        FileWriter fw = null;
        try
        {
            fw = new FileWriter("k:\\demo.txt"); //windows
写两个目录分隔符,转义字符
            fw.write("abc");
        }
        catch (IOException e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            try
            {
                if(fw!=null)
                    fw.close();
            }
            catch (IOException e)
            {
                System.out.println(e.toString());
            }
            
        }
    }
}
IO
流的小知识点:
BufferedReader的特点1、是装饰类,增加Reader系列的功能;2,有跨平台的转行符newLine();

3,可以一次读一行的方法readLine();4,其子类LineNumberReader是个可以有行号输出的子类。

转换流的理解:

 

                                                                                     

                      InputStreamRead

                                                                                                                                          OutputStreamWriter

 字节>>>>>>>>>>>>>>>>>à字符 >>>>>>>>>>>>>>>>>>字节 

转换流的使用场合:1、字节需要转换成字符操作时,2、需要制定编码表时。

流操作的基本规律:
         通过三个明确来完成。
         1.明确:源和目的。
            源:输入流。   InputStream   Reader
                  
目的:输出流。 OutputStream  Writer
              2.
明确:操作的数据是否是纯文本。
           是:用字符流。
           否:用字节流。
         3.当体系明确后,在明确要使用哪个具体的对象。通过设备来进行区分。
           源设备:内存,硬盘,键盘
           目的设备:内存,硬盘,控制台。
例如:
将一个文本文件中的数据存储到另一个文件中。(复制文件)
   源:文本文件。InputStream Reader 因为是源所以使用读取流。
   是不是操作文本文件:
   是:这时就选择Reader.这样体系就明确了。
  接下来明确对象:要是用该体系的哪些对象。
   明确设备:硬盘。(硬盘上的一个文件)
   Reader体系中可以操作文件的对象是FileReader.
  
是否需要提供效率:
   是:加入Reader体系中缓冲区 BufferedReader.

从这个规律上入手,试着分析一下。
并从多个方面考虑,加上反复应用,对于IO流的理解与应用会有很大的提高

 ---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值