Java连载156-IO总结(三)

一、管道流

&#xA0;&#xA0;<span class="hljs-keyword">final</span>&#xA0;PipedOutputStream&#xA0;pps&#xA0;=&#xA0;<span class="hljs-keyword">new</span>&#xA0;PipedOutputStream();<br>&#xA0;&#xA0;<span class="hljs-keyword">final</span>&#xA0;PipedInputStream&#xA0;pis&#xA0;=&#xA0;<span class="hljs-keyword">new</span>&#xA0;PipedInputStream(pps);<br>&#xA0;&#xA0;<span class="hljs-keyword">new</span>&#xA0;Thread(<span class="hljs-keyword">new</span>&#xA0;Runnable()&#xA0;{<br>&#xA0;&#xA0;&#xA0;<span class="hljs-function"><span class="hljs-keyword">public</span>&#xA0;<span class="hljs-keyword">void</span>&#xA0;<span class="hljs-title">run</span><span class="hljs-params">()</span>&#xA0;</span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">try</span>&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;pps.write(<span class="hljs-string">"&#x5389;&#x5BB3;&#x4E86;"</span>.getBytes(StandardCharsets.UTF_8));<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;pps.close();<br>&#xA0;&#xA0;&#xA0;&#xA0;}&#xA0;<span class="hljs-keyword">catch</span>&#xA0;(IOException&#xA0;e)&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;e.printStackTrace();<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>&#xA0;&#xA0;&#xA0;}<br>&#xA0;&#xA0;}).start();<br>&#xA0;&#xA0;<br>&#xA0;&#xA0;<span class="hljs-keyword">new</span>&#xA0;Thread(<span class="hljs-keyword">new</span>&#xA0;Runnable()&#xA0;{<br>&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;<span class="hljs-function"><span class="hljs-keyword">public</span>&#xA0;<span class="hljs-keyword">void</span>&#xA0;<span class="hljs-title">run</span><span class="hljs-params">()</span>&#xA0;</span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">try</span>&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">int</span>&#xA0;b3&#xA0;=&#xA0;<span class="hljs-number">0</span>;<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">byte</span>[]&#xA0;flush&#xA0;=&#xA0;<span class="hljs-keyword">new</span>&#xA0;<span class="hljs-keyword">byte</span>[<span class="hljs-number">1024</span>];<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">while</span>&#xA0;((b3=pis.read(flush))&#xA0;!=&#xA0;-<span class="hljs-number">1</span>)&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;System.out.println(<span class="hljs-keyword">new</span>&#xA0;String(flush,&#xA0;<span class="hljs-number">0</span>,&#xA0;flush.length));<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;}<br>&#xA0;&#xA0;&#xA0;&#xA0;}&#xA0;<span class="hljs-keyword">catch</span>&#xA0;(IOException&#xA0;e)&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;e.printStackTrace();<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>&#xA0;&#xA0;&#xA0;}<br>&#xA0;&#xA0;}).start();
  • 上面的管道流和Linux中的管道流是类似的

二、基本数据流

  • 可以使用DataInputStream等及逆行基本数据的存储
&#xA0;&#xA0;String&#xA0;address&#xA0;=&#xA0;<span class="hljs-string">"E:\\d05_gitcode\\Java\\newJava\\src\\com\\newJava\\newFile.txt"</span>;<br>&#xA0;&#xA0;DataInputStream&#xA0;dis&#xA0;=&#xA0;<span class="hljs-keyword">new</span>&#xA0;DataInputStream(<span class="hljs-keyword">new</span>&#xA0;FileInputStream(address));<br>&#xA0;&#xA0;<span class="hljs-keyword">byte</span>&#xA0;b&#xA0;=&#xA0;dis.readByte();<br>&#xA0;&#xA0;System.out.println(b);<br>&#xA0;&#xA0;<span class="hljs-keyword">short</span>&#xA0;s&#xA0;=&#xA0;dis.readShort();<br>&#xA0;&#xA0;System.out.println(s);<br>&#xA0;&#xA0;<span class="hljs-keyword">int</span>&#xA0;i&#xA0;=&#xA0;dis.readInt();<br>&#xA0;&#xA0;System.out.println(i);<br>&#xA0;&#xA0;<span class="hljs-keyword">long</span>&#xA0;l&#xA0;=&#xA0;dis.readLong();<br>&#xA0;&#xA0;System.out.println(l);<br>&#xA0;&#xA0;<span class="hljs-keyword">float</span>&#xA0;f&#xA0;=&#xA0;dis.readFloat();<br>&#xA0;&#xA0;System.out.println(f);<br>&#xA0;&#xA0;<span class="hljs-keyword">double</span>&#xA0;d&#xA0;=&#xA0;dis.readDouble();<br>&#xA0;&#xA0;System.out.println(d);<br>&#xA0;&#xA0;<span class="hljs-keyword">char</span>&#xA0;c&#xA0;=&#xA0;dis.readChar();<br>&#xA0;&#xA0;System.out.println(c);<br>&#xA0;&#xA0;<span class="hljs-keyword">boolean</span>&#xA0;bo&#xA0;=&#xA0;dis.readBoolean();<br>&#xA0;&#xA0;System.out.println(bo);<br>&#xA0;&#xA0;<br>&#xA0;&#xA0;DataOutputStream&#xA0;dos&#xA0;=&#xA0;<span class="hljs-keyword">new</span>&#xA0;DataOutputStream(<span class="hljs-keyword">new</span>&#xA0;FileOutputStream(address));<br>&#xA0;&#xA0;dos.writeByte(<span class="hljs-number">1</span>);<br>&#xA0;&#xA0;dos.writeShort(<span class="hljs-number">2</span>);<br>&#xA0;&#xA0;dos.writeInt(<span class="hljs-number">3</span>);<br>&#xA0;&#xA0;dos.writeLong(<span class="hljs-number">4L</span>);<br>&#xA0;&#xA0;dos.writeFloat(<span class="hljs-number">5.0f</span>);<br>&#xA0;&#xA0;dos.writeDouble(<span class="hljs-number">6.0</span>d);<br>&#xA0;&#xA0;dos.writeChar(<span class="hljs-number">7</span>);<br>&#xA0;&#xA0;dos.writeBoolean(<span class="hljs-keyword">false</span>);

Java连载156-IO总结(三)

三、缓存流

  • CPU运行速度是内存的几百倍,是磁盘的几百万倍,因此减少和磁盘的交互,就能提高IO的速度,我们在这两者之间提供一个buffer,缓存流(也就是BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter), 来增多一次性读写的数量,减少IO的次数。 Java连载156-IO总结(三)

四、打印流

  • 我们所使用的System.out.println()方法就是打印流的一种
&#xA0;&#xA0;StringWriter&#xA0;sw&#xA0;=&#xA0;<span class="hljs-keyword">new</span>&#xA0;StringWriter();<br>&#xA0;&#xA0;<span class="hljs-keyword">try</span>&#xA0;(PrintWriter&#xA0;pw&#xA0;=&#xA0;<span class="hljs-keyword">new</span>&#xA0;PrintWriter(sw))&#xA0;{<br>&#xA0;&#xA0;&#xA0;pw.println(<span class="hljs-string">"lisudfos"</span>);<br>&#xA0;&#xA0;}<br>&#xA0;&#xA0;System.out.println(<span class="hljs-string">"lisudfos"</span>);

五、源码

Original: https://www.cnblogs.com/ruigege0000/p/15734697.html
Author: 心悦君兮君不知-睿
Title: Java连载156-IO总结(三)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607936/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 3.BIO的多发和多收机制

    1.如何实现客户端多次发消息,服务端多次接收的情况呢 1.&#x670D;&#x52A1;&#x7AEF; /** * &#x76EE;&#…

    Java 2023年6月5日
    064
  • 14.springboot+mybatis+dubbo+zookeeper全套工程

    1.构建普通maven工程 New→Project→Maven 2.编写父级工程名 3.maven资源的存储位置 4.核对工程名和模块名称第一次需要时同一个 5.完成项目后,需要将…

    Java 2023年6月13日
    058
  • 管理敏感词+图片识别文字审核敏感词

    1.DFA实现原理 DFA全称为:Deterministic Finite Automaton,即确定有穷自动机。 存储:一次性的把所有的敏感词存储到了多个map中,就是下图表示这…

    Java 2023年6月9日
    081
  • 群晖MariaDB10 远程连接

    群晖MariaDB10 远程连接 ssh进入群晖 cd /volume2/@appstore/MariaDB10/usr/local/mariadb10/bin 命令进入Maria…

    Java 2023年6月6日
    068
  • java自带的四种线程池

    java预定义的哪四种线程池? newSingleThreadExexcutor:单线程数的线程池(核心线程数=最大线程数=1) newFixedThreadPool:固定线程数的…

    Java 2023年6月8日
    076
  • Java基础之运算符

    Java基础之运算符 Java基础之运算符 – 1.1 运算符介绍 1.1.1 运算符介绍 1.2 算术运算符 1.2.1 介绍 1.2.2 算术运算符一览表 1.2….

    Java 2023年6月15日
    049
  • 公众号资料分享

    在公众号分享两份资料一份是面试资料整理,面试资料针对Java方向,从JVM虚拟机到机器学习,云计算都有涉及,虽然机器学习有些内容比较简单,但是整体的知识框架还是列出来了,总结的非常…

    Java 2023年5月30日
    058
  • Maven使用总结

    Maven使用总结 一、Maven的主要作用 Maven 翻译为”专家”、”内行”,是 Apache 下的一个纯 Java 开发的开…

    Java 2023年6月8日
    085
  • Spring Data JPA系列4——Spring声明式事务处理与多数据源支持

    大家好,又见面了。 到这里呢,已经是本 SpringData JPA系列文档的第四篇了,先来回顾下前面三篇: 在第1篇《Spring Data JPA系列1:JDBC、ORM、JP…

    Java 2023年6月7日
    085
  • 20220808-抽象类和方法_abstract

    1. 概念: 2. 使用细节: 3. 抽象类实践——模版设计模式 抽象类:当父类的某些方法,需要声明,但是有不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类。 abs…

    Java 2023年6月15日
    096
  • kafka单机部署、集群部署、命令实操

    单机部署 安装配置zookeeper tar zxf zookeeper-3.4.10.tar.gz -C /usr cp zoo-sample.cfg zoo.cfg vi zo…

    Java 2023年6月9日
    081
  • CSS阶段试手作品——CYTUS Ⅱ官网制作

    网页Cytus Ⅱ的制作 整体布局 单栏布局,整体按顺序分为以下几个板块: 页首下载、新闻表单、角色轮播图、视频、页尾以及侧边栏 要尽可能把自己的所有知识用上,所以可能会有和原网页…

    Java 2023年6月16日
    071
  • Cross Site Scripting DOM (XSS) 攻击jQuery append() 的处理方法

    做安全红线使用 工具进行扫描时, 风险。解决该问题有两种办法。 一、原生dom方式 使用JavaScript原生dom替换append方法,原生dom会忽略 Original: h…

    Java 2023年6月13日
    063
  • Halo 开源项目学习(五):评论与点赞

    基本介绍 博客系统中,用户浏览文章时可以在文章下方发表自己的观点,与博主或其他用户进行互动,也可以为喜欢的文章点赞。下面我们一起分析一下 Halo 项目中评论和点赞功能的实现过程。…

    Java 2023年6月9日
    080
  • java Future CompletableFuture

    1.1 概述 Future没法直接对多个任务进行链式、组合等处理,而CompletableFuture是对Future的扩展和增强。CompletableFuture实现了Futu…

    Java 2023年5月29日
    092
  • “假学习”与“真学习”

    什么叫做”假学习”? **一、看书 **买一堆书,有空看看。看书,这是典型的假学习。看书看不懂还在看,就是假学习,欺骗自己,安慰自己正在学习而已。专业书都写…

    Java 2023年6月9日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球