码迷,mamicode.com
首页 > 其他好文 > 详细

第十周总结

时间:2019-11-03 19:56:58      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:输入输出重定向   异常   image   取出   team   文件   方便   amr   byte   

总结

本周主要讲了,字节流,字符流的一些基本操作,转换流,内存操作流,管道流,打印流的基本介绍,还有System对io的支持。

字节流与字符流的基本操作

在程序中所有的数据都是以流的方式进行传输或保存的,需要数据用输入流,保存数据用输出流,
主要操作流过程如下:

  • 1.使用file类打开一个文件。
  • 2.使用字节流或字符流的子类指定输出的位置。
  • 3.进行读写操作。
  • 4.关闭输入输出流。

    字节流

    字节流主要是byte数据类型,操作类为OutputStream和InputStream,outputSteam是io字节输出的最大父类,此为抽象类,要用子类实例化对象
    技术图片
    如指定文件不存在,则会自动创建文件,并写入。
    技术图片
    如输入文件路径不存在则会出现异常。

    字符流

    字符输出流Writer,输入流Reader也为抽象类,与前面一样要利用子类实例化对象,
    技术图片
    技术图片

    字节流与字符流的区别

    字节流操作时不会到缓冲区,字符流操作时会到缓冲区。
    技术图片
    技术图片

其他流

转换流

OutputStreamWriter类是Writer的子类,将输出的字符流转换为字节流,即将一个字符流的输出对象变为字节流输出对象。
InputStreamReader类是Reader的子类,将输入的字节流转换成字符流,即将一个字节流的输入对象变为字符流的输入对象。
技术图片
不管如何操作,最终全部是以字节的形式保存在文件之中。
技术图片

内存操作流

字节内存流:ByteArrayInputStream内存字节输入流,ByteArrayOutputStream内存字节输出流
字符内存流:CharArrayReader内存字符输入流,CharArrayWriter内存字符输出流。
以字节流操作为主。
技术图片
技术图片
内存操作流一般在生成一些临时信息时才会使用,如果将这些临时信息保存在文件中,则代码执行完之后肯定还要删除这个临时文件,那么此时使用内存操作流时最合适的。

管道流

管道流的主要作用时进行两个线程间的通信,分为管道输出流PipedOutputStream,管道输入流PiepdInputSream,如果要进行管道输出则必须把输出流连在输入流上。
技术图片

打印流

打印流时输出信息最方便的类,主要包含字节打印流PrintStream,字符打印流PrintWriter,主要讲解字节打印流
PrintStream时OutputStream的子类
技术图片
使用打印流进行输出格式化
技术图片

System类对IO的支持

技术图片
本来这三个常量应该大写,但此处用小写,是java历史发展的产物。
关于System.in键盘输入
有两个问题

  • 指定数据输入的长度,如果现在输入的数据超出了长度范围,则只能输入部分数据。
  • 如果指定的Byte数组为奇数则还有可能出现中文乱码。
    如果不指定大小输入英文是没有问题的,输入中文还是会出现乱码。
    最好的输入方式是将全部输入的数据暂时放到一块内存中,然后一次性从内存中读取出数据。

    输入输出重定向

    这个是改变输入流来源,输入流来源
    技术图片
    技术图片
    技术图片

第十周总结

标签:输入输出重定向   异常   image   取出   team   文件   方便   amr   byte   

原文地址:https://www.cnblogs.com/xiao--liang/p/11788452.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!