黑马程序员——IO流

来源:互联网 发布:ubuntu打开软件 编辑:程序博客网 时间:2024/04/28 21:32

    点击打开链接 点击打开链接 点击打开链接 <a href="target=" _xhe_href="target=" blank"="">.Net培训、期待与您交流!">点击打开链接 点击打开链接     

                                                IO流

 IO流:

     (Input、Output)输入输出流。用于处理源和目标的数据传输。

        按 流动方向分为:输入流和输出 流;

        按数据传输的单位分为:字节流和字符流;

         字节流是按字节单位来进行传输,如果传输中文,由于一个中文是由两个字节组成。所以在传输的过程中会出现乱码,所以在处理中文数据的传输更推荐使用字符流,因为他是按照一个字符一个字符来进行传输了,它将每一个字母、汉字、特殊字符都当成是一个字符来传输。这样就避免了乱码出现,当然,乱码的出现还依赖于字符编码。

IO流中有四大抽象流,由着四大抽象流派生出IO流的各种体系。

      字符流在操作时会使用到缓冲区,而字节流操作时不会用到缓冲区,简单来说就是

字符流在读写数据时,会把数据先存到一个临时缓冲区中,而字节流是直接存倒文件中

是用字符流是,要在文件看到写入的数据,必须先使用flush命令刷新,不然的话数据存储在缓冲区中还没有存入到文件中,这时候文件中是看不到的,当不在使用字符流时,需要关闭流资源,使用close命令,关闭时系统会自动将缓冲区的数据写到文件中,当关闭流以后,就不能再通过流对数据进行读写操作。

       两者相比,肯定使用字节流更加方便,而且在程序中像图片、音频等文件都是采用字节的方式进行存储的,那么肯定字节流比字符流使用更加广泛,但如果想要操作中文字符流更加方便快捷。


                              字节流                        字符流

输入流:            InputStream                  Reader

输出流:           OutputStream                 Writer

由于上述四大流都是抽象流不能实例化,所以必须使用它们的子类


文件流

文件字节输入流:FileInputStream    

文件字节输出流:FileOutputStream

文件字符输入流:FileReader

文件字符输出流:FileWriter


内存流

内存输入字节流: ByteArrayIntputStream

内存输出字节流: ByteArrayOutputStream

内存输入字符流: CharArrayInputStream

内存输出字符流: CharArrayOutputStream


转换流: 

将字节流转换成字符流 输出  OutputStreamWriter

将字节流转换成字符流输入 InputStreamReader


缓冲流

缓冲流要套接在相应的节点流上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时在前面的流的基础上增加了一些新功能,在流操作的过程中一般优先选用缓冲流。

缓冲字节输入流:BufferedInputStream

缓冲字节输出流:BufferedOutputStream

缓冲字符输入流:BufferedReader

缓冲字符输出流:BufferedWriter

我们可以把缓冲流当做是一个包装流,因为他构造器中要求传入的是一个输入输出流

例:

     BufferedOutputStream(OutputStream out){ }//传入OutputStream对象

BufferedWriter里面多了一个newLine()方法,可以写入一个行分隔符

BufferedReader里面多了一个readLine()方法,可以读取一行文本。


打印流

打印流。故名思议就是输出流。他可以将任意类型的数据输出到文件或者是一个输出流中。且永远不会抛出IO异常

字节打印流: PrintStream 

字符打印流: PrintWriter


标准输入输出流

public static final PrintStream err:  标准的错误输出流,控制台输出

public static final PrintStream out:  标准的输出流,控制台输出

public static final PrintStream in:  标准的输入流,控制台输入


重定向标准输入输出流(改变标准输入输出流的数据源或目标地)

public static final PrintStream setErr(InputStream in):   重新分配标准输入流

public static final PrintStream setOut(PrintStream out):  重新分配标准输出流

public static final PrintStream setIn(PrintStream out):  重新分配标准错误输出流


scanner

可以使用正则表达式来解析基本类型和字符串的简单文本扫描器

使用方式:

Scanner s = new Scanner(system.in);

s.nextLine();//从控制台获取到数据内容

---------------------- <a target="blank">ASP.Net+Unity开发</a>、<a target="blank">.Net培训</a>、期待与您交流! ----------------------


0 0