Java打印流原理及实例详解

这篇文章主要介绍了Java打印流原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

平时我们在控制台打印输出,是调用print方法和println方法完成的,这两个方法都来自于java.io.PrintStream类,该类能够方便地打印各种数据类型的值,是一种便捷的输岀方式。

PrintStream类

PrintStream类,为其他输出流添加了功能,使他们能够方便的打印各种数据值表示格式。

PrintStream类的特点:

只负责数据的输出,不负责数据的读取。

与其他输出流不同,PrintStream永远不会抛出IOException异常。

特有方法:print()、println()

构造方法

PrintStream(String fileName)
// 使用指定的文件名创建一个新的打印流。

继承自父类的方法

PrintStream extends OutputStream

1、public abstract void write(int b) throws IOException;
// 将指定的字节输出流。

2、public void write(byte b[]) throws IOException{...};
// 将b.length字节从指定的字节数组写入此输出流。

3、public void write(byte b[], int off, int len) throws IOException{...};
// 从指定的字节数组写入len字节,从偏移量off开始输出到此输出流。

4、public void flush() throws IOException{};
// 刷新此输出流并强制任何缓冲的输出字节被写出。

5、public void close() throws IOException {};
// 关闭此输出流并释放与此流相关联的任何系统资源。

说明:

如果使用继承父类的write方法写数据,那么查询数据的时候,会查询编码表。

如果使用自身特有的print方法、println方法写数据,那么写的数据会原样输出。

举例:往print.txt空文件中写入数据

import java.io.FileNotFoundException;
import java.io.PrintStream;

public class DemoPrintStream {
  public static void main(String[] args) throws FileNotFoundException {
    // 创建PrintStream对象,传入输出的路径,路径需要存在,否则会抛出FileNotFoundException异常
    PrintStream ps = new PrintStream("/Users/liyihua/IdeaProjects/Study/src/view/study/demo37/print");

    // 使用父类OutputStream的write方法,写入数据
    ps.write(97);
    // 使用自身特有的方法,写入数据
    ps.print(97);

    // 释放资源
    ps.close();
  }
}

print.txt文件内容如下:

数据a是使用父类中的write方法写入的。数据97是使用自身特有方法写入的。

练习:改变输出语句的目的地

分析:输出语句,默认是在控制台输出,使用System.setOut方法,可以改变输出语句的目的地。

static void setOut(PrintStream out)
// 将输出语句的目的地,改变为参数中传递的打印流的目的地。

参数:
PrintStream out:打印流对象

代码实现:

import java.io.FileNotFoundException;
import java.io.PrintStream;

public class DemoSetOut {
  public static void main(String[] args) throws FileNotFoundException {
    // 在控制台输出
    System.out.println("我是在控制台输出的!!!");

    // 在空的setOut.txt文件中输出
    PrintStream ps = new PrintStream("/Users/liyihua/IdeaProjects/Study/src/view/study/demo37/setOut");
    System.setOut(ps);
    System.out.println("我是在setOut.txt文件中输出的!!!");

    // 释放资源
    ps.close();
  }
}

控制台输出:

我是在控制台输出的!!!

setOut.txt文件内容:

我是在setOut.txt文件中输出的!!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java控制台打印本月的日历

    Java在控制台打印本月日历 在学习<Java核心技术卷I·基础知识>第10版 的时候里面有一个小例子,就是在控制台上打印日历的一个例子,就想自己试试. 代码如下: import java.time.LocalDate; public class TestScanner { public static void main(String[] args) { rili(); } private static void rili() { System.out.println(" Mon T

  • JAVA实现连接本地打印机并打印文件的实现代码

    实现代码一 import javax.print.*; import javax.print.attribute.DocAttributeSet; import javax.print.attribute.HashDocAttributeSet; import javax.print.attribute.HashPrintRequestAttributeSet; import javax.print.attribute.PrintRequestAttributeSet; import java.

  • java打印指定年月份的日历

    本文实例为大家分享了java打印指定年月份日历的具体代码,供大家参考,具体内容如下 做了一个小的日历打印,没有使用数组,所以不能对日期进行操作,用了单个for循环打印,对初学者来说应该好理解点 工具类: import java.util.Calendar; public class DaysTool { private int year; private int month; public DaysTool(){} public DaysTool(int year ,int month){ th

  • java打印国际象棋棋盘的方法

    本文实例为大家分享了java打印出国际象棋棋盘的具体代码,供大家参考,具体内容如下 问题分析 观察国际象棋棋盘的图案,可以发现其中的规律:棋盘由八行八列黑白方块相间组成,可以用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方块还是白方块.这里我们使用了Swing的标签组件JLable,通过设置JLabel组件的背景色和透明度来实现黑白方块. (1)确定程序框架 这是一个绘图案例,这里我们采用JFrame创建窗口,然后在窗口里添加JLabel标签组件,通过前面的问题分析可知,JLabel标

  • java编程题之从上往下打印出二叉树

    本文实例为大家分享了java从上往下打印出二叉树的具体代码,供大家参考,具体内容如下 github:剑指offer编程全部试题 import java.util.ArrayList; import java.util.Stack; /** * * 剑指offer编程题(JAVA实现)--第22题:从上往下打印出二叉树 * * 题目描述 * 从上往下打印出二叉树的每个节点,同层节点从左至右打印. * */ public class Test22 { ArrayList<Integer> arra

  • Java学习-打印1-1000以内的水仙花数代码实例

    水仙花数:水仙花数是三位数,它的各位数字的立方和等于这个三位数本身,例如:370=33+73+00:371=33+73+13,370.371就是一个水仙花数 注意:要判断一个三位数是不是水仙花数,得先取得这个三位数的的个位,十位和百位 public class MyTest { public static void main(String[] args) { /* 打印1-1000的水仙花数 水仙花数:例如 153=1*1*1+5*5*5+3*3*3*/ //定义标记,水仙花数起始值位0 int

  • Java顺时针打印矩阵

    本文实例为大家分享了Java顺时针打印矩阵的具体代码,供大家参考,具体内容如下 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字.例如:如果输入如下矩阵: 1     2       3     4 5     6       7     8 9    10    11   12 13 14    15   16 则依次打印出数字1.2.3.4.8.12.16.15.14.13.9.5.6.7.11.10. 思路: 首先拿到这个题,读完题我们脑子里会呈现出这样的一个画面.从外

  • java实现两个线程交替打印的实例代码

    使用ReentrantLock实现两个线程交替打印 实现字母在前数字在后 package com.study.pattern; import java.util.concurrent.CountDownLatch; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public c

  • Java 实现多线程切换等待唤醒交替打印奇偶数

    引言 在日常工作生活中,可能会有用时几个人或是很多人干同一件事,在java编程中,同样也会出现类似的情况,多个线程干同样一个活儿,比如火车站买票系统不能多个人买一到的是同一张票,当某个窗口(线程)在卖某一张票的时候,别的窗口(线程)不允许再卖此张票了,在此过程中涉及到一个锁和资源等待的问题,如何合理正确的让线程与线程在干同一件事的过程中,不会抢资源以及一个一直等待一个一直干活的状况,接下来就聊一下多线程的等待唤醒以及切换的过程,在此就以A和B两个线程交替打印奇偶数的例子为例,代码如下: pack

  • Java打印流原理及实例详解

    这篇文章主要介绍了Java打印流原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 平时我们在控制台打印输出,是调用print方法和println方法完成的,这两个方法都来自于java.io.PrintStream类,该类能够方便地打印各种数据类型的值,是一种便捷的输岀方式. PrintStream类 PrintStream类,为其他输出流添加了功能,使他们能够方便的打印各种数据值表示格式. PrintStream类的特点: 只负责数

  • java打印出菱形图案实例详解

    第一步:首先对图像进行解析 想要打印该图形必须要进行多层循环嵌套,分两个部分进行打印. 第一部分为上半部分前四行,他们是递增的关系,后半部分后三行为递减关系,由此可以得出我们需要写两个打的循环.并且由于"*"位置的关系,我们必须带入空格同时打印.所以每个部分需要两个循环控制,即两个大循环每个里面嵌套两个小循环总计四个循环. 第二部:对数字进行分析 在分析之前,我们必须明白外层循环控制行数,内层循环控制列数,因此我们需要分析他的行和列. 示例代码如下: class ForForTest

  • Java多线程 ReentrantReadWriteLock原理及实例详解

    读写锁ReentrantReadWriteLock概述 读写锁ReentrantReadWriteLock,使用它比ReentrantLock效率更高. 读写锁表示两个锁,一个是读操作相关的锁,称为共享锁:另一个是写操作相关的锁,称为排他锁. 1.读和读之间不互斥,因为读操作不会有线程安全问题 2.写和写之间互斥,避免一个写操作影响另外一个写操作,引发线程安全问题 3.读和写之间互斥,避免读操作的时候写操作修改了内容,引发线程安全问题 多个Thread可以同时进行读取操作,但是同一时刻只允许一个

  • Java中IO流 RandomAccessFile类实例详解

    Java中IO流 RandomAccessFile类实例详解 RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. java文件模型,在硬盘上的文件是byte byte byte存储的,是数据的集合 打开文件,有两种模式,"rw"读写."r"只读:RandomAccessFile raf = new RandomAccessFile(file, "rw");,文

  • Java Linkedlist原理及实例详解

    这篇文章主要介绍了Java Linkedlist原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 定义:linkedlist属于链表结构,方便添加和删除元素,但查询不方便,适用于对收尾的操作. 具有具体的对象,使用对象调用具体的方法 add // 添加元素 //在中间添加元素 arr.add("H"); addFirst:在集合最前面添加元素 // 在链表头部添加元素 arr.addFirst("F")

  • Java基础之Stream流原理与用法详解

    目录 一.接口设计 二.创建操作 三.中间操作 四.最终操作 五.Collect收集 Stream简化元素计算 一.接口设计 从Java1.8开始提出了Stream流的概念,侧重对于源数据计算能力的封装,并且支持序列与并行两种操作方式:依旧先看核心接口的设计: BaseStream:基础接口,声明了流管理的核心方法: Stream:核心接口,声明了流操作的核心方法,其他接口为指定类型的适配: 基础案例:通过指定元素的值,返回一个序列流,元素的内容是字符串,并转换为Long类型,最终计算求和结果并

  • Spring IOC和aop的原理及实例详解

    这篇文章主要介绍了Spring IOC和aop的原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架.特点是面向接口编程,松耦合. 1:IOC(控制反转) 别名(DI:依赖注入) 首先来一段ioc的实现原来代码: public class ClassPathXmlApplicationContext implements BeanFactory { privat

  • Java8默认方法Default Methods原理及实例详解

    这篇文章主要介绍了Java8默认方法Default Methods原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java 8 引入了新的语言特性--默认方法(Default Methods). Default methods enable new functionality to be added to the interfaces of libraries and ensure binary compatibility wit

  • SpringBoot Starter依赖原理与实例详解

    目录 1 Starter 2 了解 spring.factories机制 2.1 不同包路径下的依赖注入 2.2 spring.factories 机制 3 spring.factories 机制的实现源码分析 4 程序运行入口run() 1 Starter 在开发 SpringBoot 项目的时候,我们常常通过 Maven 导入自动各种依赖,其中很多依赖都是以 xxx-starter 命名的. 像这种 starter 依赖是怎么工作的呢? 2 了解 spring.factories机制 导入一

  • Java 中This用法的实例详解

     Java 中This用法的实例详解 用类名定义一个变量的时候,定义的只是一个引用,外面可以通过这个引用来访问这个类里面的属性和方法. 那们类里面是够也应该有一个引用来访问自己的属性和方法纳? 呵呵,Java提供了一个很好的东西,就是 this 对象,它可以在类里面来引用这个类的属性和方法.先来个简单的例子: public class ThisDemo { String name="Mick"; public void print(String name){ System.out.pr

随机推荐