打印输出流PrintStream和PrintWriter(五)下

简介: 打印输出流PrintStream和PrintWriter(五)

三. System 对 IO 的支持


我们在刚刚学习 Java的时候,编写的第一个程序,


public class Hello{
  public static void main(String[] args){
    System.out.println("Hello World!!!");
  }
}


会向控制台打印输出 “Hello World!!!”


查看 System 的类 API, 会发现


2020061715573494.png


这儿的 PrintStream 就是 上面的字节打印输出流 PrintStream.

其中, System 类中还有这三个方法,


20200617155743451.png


可以改变输出流的位置, 一会用得上, 先找出来。


System.in 表示从控制台输入, 用于接收从控制台输入的内容


System.out, 表示输出到控制台,输出正确的信息


System.err, 表示输出到控制台,输出错误的信息。


三.一 System.out


三.一.一 输出信息到控制台


@Test
public void outTest(){
    //控制台
   PrintStream printStream= System.out;
   printStream.print("你好啊");
   printStream.println("你好不");
   String name="两个蝴蝶飞";
   int age=24;
   //打印
   printStream.printf("名称%s,年龄%d:",name,age);
}


运行程序,打印输出:


20200617155753157.png


输出,也可以输出到指定的输出流


三.一.二 输出信息到指定的输出流


@Test
    public void out2Test() throws Exception{
        File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"out.txt");
    //设置地方
        PrintStream out=new PrintStream(new FileOutputStream(file,true));
        //设置输出的地方
        System.setOut(out);
        out.print("你好啊");
        out.println("你好不");
        String name="两个蝴蝶飞";
        int age=24;
        out.printf("名称%s,年龄%d:",name,age);
    }


运行程序, 会发现 out.txt 文件有相应的信息。


2020061715580098.png


三.二 System.in


输出的是错误的信息。


三.二.一 输出错误信息到控制台


  @Test
    public void errTest(){
        PrintStream printStream= System.err;
        PrintStream out= System.out;
        try {
            out.printf("正常打印");
            printStream.print("错误打印");
            int a=10/0;
        } catch (Exception e) {
            printStream.printf("出错了");
        }
    }


运行程序,观察控制台输出:


20200617155805285.png


两者效果是一样的, 只是输出信息的字体颜色有些区别。


三.二.二 输出错误信息到指定的输出流


  @Test
    public void err2Test() throws Exception{
        File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"err.txt");
        PrintStream err=new PrintStream(new FileOutputStream(file,true));
        //设置内容
        System.setErr(err);
        err.print("你好啊");
        err.println("你好不");
        String name="两个蝴蝶飞";
        int age=24;
        err.printf("名称%s,年龄%d:",name,age);
    }


运行程序, 观察 err.txt 文件内容


20200617155811364.png


System.out 与 System.err 没有区别,只能从概念上区分, out输出正确的信息,err输出的是错误的信息。


三.三 System.in


用于接收控制台的输入情况


三.三.一 将控制台当输入源


 public static void main(String[] args) {
        try {
            inTest();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //注意,是字节读取,会存在乱码情况
    public static void inTest() throws Exception{
        System.out.println("请输入你的内容:");
       InputStream inputStream= System.in;
       byte[] bytes=new byte[6];
       //将输入的内容放置到 bytes 字节数组里
       inputStream.read(bytes);
        System.out.println("输出内容:"+new String(bytes));
    }


运行程序, 控制台可以输入相应的内容, 会阻塞程序


2020061715581799.png


输入的内容,都会当成字节数组, 无论是数字,还是小数,还是布尔。 需要我们手动区分。


三.三.二 指定输入源


   public static void main(String[] args) {
        try {
            in2Test();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void in2Test() throws Exception{
        File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"out.txt");
        InputStream in=new FileInputStream(file);
        System.out.println("请输入你的内容:");
        System.setIn(in);
        byte[] bytes=new byte[1024];
        int len=in.read(bytes);
        System.out.println("输出内容:"+new String(bytes,0,len));
    }


运行程序,控制台打印输出:


2020061715582214.png


谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!

相关文章
|
3月前
|
移动开发 Java Linux
IO流:字节输出流FileOutputStream的超详细用法
IO流:字节输出流FileOutputStream的超详细用法
|
8月前
打印流
打印流
22 1
|
8月前
|
Java
Java IO流--打印流PrintStream和PrintWriter的使用详解
Java IO流--打印流PrintStream和PrintWriter的使用详解
92 0
|
8月前
|
Java
Java IO流--标准输入System.in,输出流System.out的使用
Java IO流--标准输入System.in,输出流System.out的使用
127 0
|
8月前
|
Java 数据处理
Java IO(File、字节输入输出流、字符输入输出流、打印流)附带相关面试题
1.File类,2.字节输入输出流(InputStream Outputstream),3.Writer与Reader字符输入输出流,4.打印流
60 0
|
10月前
|
存储 缓存 Java
【Java I/O 流】文件字符输入输出流:FileReader 和 FileWriter
本篇文章主要讲述“文件字符输入流”和“文件字符输出流”两个类的使用,并列举了一些读写案例,帮助学习。
345 0
|
10月前
|
存储 缓存 Java
【Java I/O 流】字符输入输出流:Reader 和 Writer
前面我们已经学会了字节流的使用,本篇开始介绍字符流。字符输入输出流是所有字符流的超类,学会了它们的方法,也基本上掌握了其子类的使用了。
78 0
|
10月前
|
存储 缓存 Java
【Java I/O 流】字符缓冲流:BuffreadReader 和 BufferedWriter
缓冲流是一个包装流,在创建缓冲流实例时,需要传入底层真实操作的输入或输出流。其主要的作用就是为了提高读写效率而生的。 今天讲的字符缓冲流有两个:`BuffreadReader` (字符缓冲输入流)和 `BufferedWriter`(字符缓冲输出流)。本文会介绍它们的构造函数和一些常用方法,最后使用真实案例来学习字符缓冲流是如何使用的。
112 0
|
数据格式
Java-IO流之标准输入、输出流
System.in和System.out分别代表了系统标准的输入和输出设备
77 0