打印流:PrintStream与PrintWriter

PrintStream

该类的定义如下:

  public class PrintStream extends FilterOutputStream implemtns Appendable,Closeable

可以发现,它是OutputStream的一个子类

构造方法如下:

  PrintStream(OutputStream out)

它可以根据实例化的类对象不同,向不同的地方打印,并且在打印流中,提供了更加丰富的打印方法。

实例:

  1. package com.fuwh.stream;
  2.  
  3. import java.io.File;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.PrintStream;
  7.  
  8. public class PrintStreamTest01 {
  9. public static void main(String[] args) throws IOException {
  10. //向文件中打印
  11. PrintStream ps=new PrintStream(new FileOutputStream(new File("ps.txt")));
  12. String name="貂蝉";
  13. int age=18;
  14. float shengao=1.41f;
  15. ps.print(name);
  16. ps.print(age);
  17. ps.print(shengao);
  18. ps.close();
  19. }
  20. }

这个时候,不知道大家有没有发现,我们一直在用的System.out.println()有啥特点呢,没错,里面也使用到了Println()方法。

查看System类的定义可以发现,里面存在三个静态字段:

static PrintStream err:“标准”错误输出流

static InputStream in:“标准”输入流

static PrintStream out:“标准” 输出流

他们都有固定的输入输出端。

err实例:

  1. package com.fuwh.system;
  2.  
  3. import java.io.PrintStream;
  4.  
  5. public class ErrTest01 {
  6. public static void main(String[] args) {
  7.  
  8. PrintStream err=System.err;
  9. err.print("这是错误信息");
  10. }
  11. }

可以看到,用err输出的信息是红色的。

out实例:

  1. package com.fuwh.system;
  2.  
  3. import java.io.PrintStream;
  4.  
  5. public class OutTest01 {
  6. public static void main(String[] args) {
  7.  
  8. PrintStream out=System.out;
  9. out.print("这是输出信息");
  10. }
  11. }

这个输出信息就是普通的信息。

in实例:

  1. package com.fuwh.system;
  2.  
  3. import java.io.InputStream;
  4.  
  5. public class InTest01 {
  6.  
  7. public static void main(String[] args) throws Exception {
  8. InputStream is=System.in;
  9. System.out.println("请输入数据:");
  10. byte[] b=new byte[1024];
  11. is.read(b);
  12. System.out.println("输入的内容是:"+new String(b,0,b.length));
  13. is.close();
  14. }
  15. }

在System类中,还存在以下三个方法,可以实现对err,out,in的输入输出重定向

  ·static void setIn(InputStream in)

  ·static void setOut(PrintStream out)

  ·static void setErr(PrintStream err)

实例--实现对out的输出重定向到文件中:

  1. package com.fuwh.system;
  2.  
  3. import java.io.File;
  4. import java.io.FileOutputStream;
  5. import java.io.PrintStream;
  6.  
  7. public class OutTest02 {
  8. public static void main(String[] args) throws Exception{
  9.  
  10. //调用set方法对out的输出重定向到文件中
  11. System.setOut(new PrintStream(new FileOutputStream(new File("out.txt"))));
  12. System.out.print("这是输出信息");
  13. }
  14. }

缓冲区读取: BufferedReader/BufferedWriter(重点)

类的定义如下:

  public class BufferedReader extends Reader

  public class BufferedWriter extends Writer

构造方法:

  BufferedReader(Reader in):创建一个使用默认大小输入缓冲区的缓冲字符输入流

  BufferedReader(Reader in,int size):穿件一个使用指定大小输入缓冲区的缓冲字符流

  

从字符输入流中读取文件,缓冲各个字符,从何实现字符,数组,和行的高效读取。

实例1:

  1. package com.fuwh.buffer;
  2.  
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileOutputStream;
  6. import java.io.OutputStreamWriter;
  7. import java.io.PrintWriter;
  8.  
  9. public class BufferedWriterTest01 {
  10. public static void main(String[] args) throws Exception {
  11. PrintWriter print=
  12. new PrintWriter(
  13. new BufferedWriter(
  14. new OutputStreamWriter(
  15. new FileOutputStream(
  16. new File("buffer.txt")
  17. )
  18. )
  19. )
  20. );
  21. print.write("这个定义好长啊!");
  22. print.close();
  23. }
  24. }

实例2:

  1. package com.fuwh.buffer;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.InputStreamReader;
  5.  
  6. public class BufferedReaderTest01 {
  7. public static void main(String[] args) throws Exception{
  8. BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  9. System.out.println("请输入内容:");
  10. String str=br.readLine();
  11. System.out.println("您输入的内容是:"+str);
  12. br.close();
  13. }
  14. }

Java IO(五)==>>重点的更多相关文章

  1. java io 模型重点讲述

    java io 模型重点讲述 bio(阻塞) 同步IO 接受请求与处理请求用同一条线程 aio 应用程序线程会向系统注册一个socket请求,以及一个回调方法,继续执行下去.socket接受区的数据监 ...

  2. java IO(五):字节流、字符流的选择规律

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  3. 系统学习 Java IO (五)----使用 SequenceInputStream 组合多个流

    目录:系统学习 Java IO---- 目录,概览 SequenceInputStream 可以将两个或多个其他 InputStream 合并为一个. 首先,SequenceInputStream 将 ...

  4. 系统学习 Java IO ---- 目录,概览

    Java IO 类的系统教程,原创.主要参考自英文教程 Java IO Tutorial 和 Java Doc. http://tutorials.jenkov.com/java-io/index.h ...

  5. Java IO学习笔记五:BIO到NIO

    作者:Grey 原文地址: Java IO学习笔记五:BIO到NIO 准备环境 准备一个CentOS7的Linux实例: 实例的IP: 192.168.205.138 我们这次实验的目的就是直观感受一 ...

  6. Java IO(十五)FilterReader 和 FilterWriter、FilterReader 子类 PushBackReader

    Java IO(十五)FilterReader 和 FilterWriter.FilterReader 子类PushBackReader 一.介绍 FilterReader 和 FilterWrite ...

  7. Java IO(五)字节流 FileInputStream 和 FileOutputStream

    Java IO(五)字节流 FileInputStream 和 FileOutputStream 一.介绍 字节流 InputStream 和 OutputStream 是字节输入流和字节输出流的超类 ...

  8. JDK源码阅读(五)java.io.Serializable接口

    package java.io; public interface Serializable { } (1)实现Serializable接口的类,将会被提示提供一个 serialVersionUID ...

  9. Java IO详解(五)------包装流

    File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...

随机推荐

  1. MySQL数据库操作类(PHP实现,支持连贯操作)

    <?php /** * Author: suvan * CreateTime: 2018/2/27 * description: 数据库操作类(仅对接MySQL数据库,主要利用MySQLi函数) ...

  2. 高校学生征信系统Postmortem结果

    Postmortem结果 设想和目标 1 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件需要解决的问题是当前高校学生征信系统建设薄弱的问题,我们试图建立 ...

  3. 张金禹 C语言--第0次作业

    1:在填报专业的时候,我也犹豫了很久,但最后还是选择了计算机专业.因为在上大学之前我就对编程.设计等有浓厚的兴趣,但繁重的高中学习任务使我没有过多的去关注,所以我选择了计算机专业去培养我在这方面的兴趣 ...

  4. 小草手把手教你 LabVIEW 串口仪器控制——初识VISA串口

    有些人,学习一样东西时候,喜欢现成的例子.很多人学习一门技术,都喜欢现成的例子开始,比如学单片机的啊,最开始都是修改的例子吧,学语言的也是.最开始都是模仿.这个年头看书上的理论知识太浪费时间了.所以啊 ...

  5. aws中的路由表

    参考官方文档: 由表中包含一系列被称为路由的规则,可用于判断网络流量的导向目的地. 在您的 VPC 中的每个子网必须与一个路由表关联:路由表控制子网的路由.一个子网一次只能与一个路由表关联,但您可以将 ...

  6. Java中三种比较常见的数组排序

    我们学习数组比较常用的数组排序算法不是为了在工作中使用(这三个算法性能不高),而是为了练习for循环和数组.因为在工作中Java API提供了现成的优化的排序方法,效率很高,以后工作中直接使用即可 . ...

  7. ThreadLocal源码分析:(二)get()方法

    在ThreadLocal的get(),set()的时候都会清除线程ThreadLocalMap里所有key为null的value. 而ThreadLocal的remove()方法会先将Entry中对k ...

  8. 算法题丨3Sum

    描述 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all ...

  9. 20道Java面试必考题

    系统整理了一下有关Java的面试题,包括基础篇,javaweb篇,框架篇,数据库篇,多线程篇,并发篇,算法篇等等,陆续更新中.其他方面如前端后端等等的面试题也在整理中,都会有的. 注:文末有福利!pd ...

  10. kubernetes进阶(03)kubernetes的namespace

    服务发现与负载均衡Kubernetes在设计之初就充分考虑了针对容器的服务发现与负载均衡机制,提供了Service资源,并通过kube-proxy配合cloud provider来适应不同的应用场景. ...