“有限”的OutputStream | 带你学《Java语言高级特性》之六十四

简介: 在日常开发中,Java的标准包有时只能满足开发使用的最低标准,OutputStream便是如此。本节将为读者介绍针对OutputStream类进行自定义开发实现优化输出功能的方法。

“一目十行”的RandomAccessFile类 | 带你学《Java语言高级特性》之六十三
在日常开发中,Java的标准包有时只能满足开发使用的最低标准,OutputStream便是如此。本节将为读者介绍针对OutputStream类进行自定义开发实现优化输出功能的方法。

【本节目标】
通过阅读本节内容,你将了解到OutputStream在输出操作方面有限的功能,了解到“装饰设计模式”的基本思想,学会通过对OutputStream类的定制完成对输出操作的优化。

打印流

如果要想通过程序实现内容的输出,核心的本质一定要依靠OutputStream类完成,但是OutputStream有一个很大的缺点:这个类的数据输出操作功能有限:public void write(byte[] b) throws IOException,所有的数据一定要转为字节数组后才能输出,假设现在项目里面可能输出的是long、double、Date,这种情况下就必须将这些数据变为字节的形式来处理,这样的处理一定是非常麻烦的,所以在开发之中最初的时候为了解决此类的重复操作,往往会由开发者自行定义一些功能类已简化输出过程。

范例:打印流设计思想

import java.io.File;
import java.io.FileOutputStream;
import java.io.Exception;
import java.io.OutputStream;
public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        File file = new File("d:" + File.separator +"mldn.txt");   //定义操作文件
        PrintUtil pu= new PrintUtil(new FileOutputStream(file));
        pu.println("姓名:小强子");
        pu.print("年龄:");
        pu.println(78);
        pu.close();
    }
}
class PrintUtil implements AutoCloseable {   //实现一些常用数据的输出
    private OutputStream output;  //不管现在如何进行输出操作,核心使用的就是OutputStream

    public PrintUtil(OutputStream output) {    //由外部来决定输出的位置
        this.output = output;
    }
    @Override
    public void close() throws Exception {
        this.output.close();
        
    }

    public void print(String str) {   //输出字符串
        try {
            this.output.write(str.getBytes());  //输出
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void println(String str) {
        this.print(str + "\r\n");
    }
    public void print(long num) {
        this.print(String.valueOf(num));
    }
    public void println(long num) {
        this.println(String.valueOf(num));
    }
    
}

在整个操作过程之中打印流的设计思想的本质在于:提高已有类的功能,例如:OutputStream是唯一可实现输出的操作标准类,所以应该以其为核心根本,但是这个类的输出的操作功能有限,所以不方便进行输出各个数据类型,那么就为它做出了一层包装,所以此时采用的设计思想就是“装饰设计模式”。

想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:使用打印流优化数据输出 | 带你学《Java语言高级特性》之六十五
更多Java面向对象编程文章查看此处

相关文章
|
1月前
|
数据采集 分布式计算 大数据
Java语言在大数据处理中的应用
传统的大数据处理往往依赖于庞大的数据中心和高性能的服务器,然而随着大数据时代的到来,Java作为一种强大的编程语言正在被广泛应用于大数据处理领域。本文将探讨Java语言在大数据处理中的优势和应用,以及其在分布式计算、数据处理和系统集成等方面的重要作用。
|
1天前
|
安全 Java 大数据
探索Java的奇妙世界:语言特性与实际应用
探索Java的奇妙世界:语言特性与实际应用
|
2天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
|
7天前
|
前端开发 Java Go
开发语言详解(python、java、Go(Golong)。。。。)
开发语言详解(python、java、Go(Golong)。。。。)
|
8天前
|
人工智能 前端开发 Java
Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码
智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
147 10
|
12天前
|
Java Android开发 C++
Kotlin vs Java:选择最佳语言进行安卓开发
【4月更文挑战第13天】Java曾是安卓开发的主流语言,但Kotlin的崛起改变了这一局面。Google在2017年支持Kotlin,引发两者优劣讨论。Java以其成熟稳定、强大生态和跨平台能力占优,但代码冗长、开发效率低和语言特性过时是短板。Kotlin则以简洁语法、空安全设计和高度兼容Java脱颖而出,但社区和生态系统仍在发展中,可能存在学习曲线和性能问题。选择语言应考虑项目需求、团队熟悉度、维护性、性能和生态系统。无论选择哪种,理解其差异并适应新技术至关重要。
|
24天前
|
Java
Java语言打印九九乘法表(详解)
Java语言打印九九乘法表(详解)
15 1
Java语言打印九九乘法表(详解)
|
1月前
|
Java API 开发工具
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用(三)
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用
30 0
|
1月前
|
Java 数据处理 数据库
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用(二)
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用
34 0
|
1月前
|
存储 算法 Java
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用(一)
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用
34 0