I/O流之打印流
来源:互联网 发布:java 数组 属于 那个类 编辑:程序博客网 时间:2024/05/16 07:22
问题引出
我们已经知道InputStream和Output Stream两个类的基本使用,但是有一个问题,如果我们想进行输出只能使用Output Stream完成,但是它并不方便。
比如我们想输出一个String数据,需要将String变为字节数组再输出,同样,如果要输出int、boolean或double都会出现这样力不从心的问题。
所以我们就希望有一个类可以支持各种基本数据类型的输出,来简化我们的输出操作的代码。这个类的前提依旧是OutputStream,输出只能依靠它来完成。我们可以尝试自己实现一下。
//工具类public class PrintUtil {//专门实现输出操作 private OutputStream output;//输出只能依靠OutputStream public PrintUtil(OutputStream output){ this.output=output; } public void print(int x){ //将整型变为String型,调用本类的输出方法,省去重复写 this.print(String.valueOf(x)); } public void print(String str){ try { this.output.write(str.getBytes()); } catch (IOException e) { e.printStackTrace(); } } public void print(double d){ this.print(String.valueOf(d)); } public void println(String str){//换行输出 this.print(str.concat("\r\n")); } public void println(int x){//换行输出 this.println(String.valueOf(x)); } public void println(double d){//换行输出 this.println(String.valueOf(d)); } public void close(){ try { this.output.close(); } catch (IOException e) { e.printStackTrace(); } }}
//测试类public class TestPrint { public static void main(String[] args) throws Exception{ //现在表示是向文件输出,文件是在磁盘e的根目录下,这样就保证由调用类来决定向哪里输出 PrintUtil pu = new PrintUtil(new FileOutputStream(new File("e:"+File.separator+"print.txt"))); pu.print("hello"); pu.println("nihao"); pu.println(1+1); pu.println(1.1+1.1); pu.close(); }
在java.io包中也给我们提供了一套专门用于输出数据的类:PrintStream(打印字节流)、PrintWriter(打印字符流)。
我们以PrintStream类为例,PrintStream类里面提供有一系列的print(),println()方法,这些方法都可以支持各种数据类型的输出,那么就不用使用write()方法了。所以我们就可以直接使用PrintStream类给我们提供的方法来实现不同数据类型的输出。
//测试类public class TestPrint { public static void main(String[] args) throws Exception{ //现在表示是向文件输出,文件是在磁盘e的根目录下,这样就保证由调用类来决定向哪里输出 PrintStream pu= new PrintStream (new FileOutputStream(new File("e:"+File.separator+"print.txt"))); pu.print("hello"); pu.println("nihao"); pu.println(1+1); pu.println(1.1+1.1); pu.close(); }
注意:
虽然操作的形式不同了,但是本质依然是基于OutputStream类的方法来完成的,那么这样的设计在Java中称为装饰设计模式。相当于将一个功能不足的操作类,通过某些类的包装形成更好用的工具类。
在开发中,只要是由程序输出内容,都会采用打印流的模式完成,但是谨记打印流也依旧需要OutputStream的支持。
0 0
- I/O流之打印流
- I/O流之--打印流
- C++之I/O流
- Java之I/O流
- Java之I/O流
- I/O之字节流
- Java I/O学习之三:打印流和序列流
- Java I/O全文摘要(七)过滤流,打印流
- [黑马程序员]--I / O打印流方法小结
- java之旅之I/O流
- java I/O流之字符流
- I/O流之缓冲流
- C++流之标准I/O流
- java 基础之I/O流
- java I/O流之文件操作
- C++ 输入输出流之标准I/O
- Java I/O之文件流
- I/O流之--BufferedWriter 和 BufferedReader
- Log4J的简单使用
- Android studio Gradle Error:Configuration with name 'default' not found.
- 获取手机中的视频
- macbook(os系统下)eclipse链接虚拟机上的hadoop,报错java.net.connectionexcpetion
- 蓝牙后台传输数据
- I/O流之打印流
- gulp启本地服务(node启本地服务)
- 干货集中营客户端
- 彻底理解Flexbox(转)
- java配合js在前台获取jsessionid
- spicy client usbredir 参数说明
- 旋转矩阵算法性能问题
- python爬虫学习之路(2)_ 淘宝淘女郎相册打包下载
- 百度地图加载问题 Java.lang.UnsatisfiedLinkError: Native method not found: com.baidu...