首页 > 编程语言 >第一百六十五节 Java IO教程 - Java标准输入/输出/错误流

第一百六十五节 Java IO教程 - Java标准输入/输出/错误流

时间:2024-07-15 21:58:20浏览次数:25  
标签:Java io java System IO new import 一百六十五 out

Java IO教程 - Java标准输入/输出/错误流

我们可以使用System.out和System.err对象引用,只要我们可以使用OutputStream对象。

我们可以使用System.in对象,只要我们可以使用InputStream对象。

System类提供了三个静态设置器方法setOut(),setIn()和setErr(),以用您自己的设备替换这三个标准设备。

要将所有标准输出重定向到一个文件,我们需要通过传递一个代表我们文件的PrintStream对象来调用setOut()方法。

import java.io.PrintStream;
import java.io.FileOutputStream;
import java.io.File;

public class Main {
  public static void main(String[] args) throws Exception {
    File outFile = new File("stdout.txt");
    PrintStream ps = new PrintStream(new FileOutputStream(outFile));

    System.out.println(outFile.getAbsolutePath());

    System.setOut(ps);

    System.out.println("Hello world!");
    System.out.println("Java I/O  is cool!");
  }
}

上面的代码生成以下结果。

标准输入流

我们可以使用System.in对象从标准输入设备(通常是键盘)读取数据。

当用户输入数据并按Enter键时,输入的数据变得可用,read()方法每次返回一个字节的数据。

以下代码说明如何读取使用键盘输入的数据。\n是Windows上的新行字符。

import java.io.IOException;

public class EchoStdin {
  public static void main(String[] args) throws IOException {
    System.out.print("Please type   a  message  and  press enter: ");

    int c = "\n";
    while ((c = System.in.read()) != "\n") {
      System.out.print((char) c);
    }
  }
}

由于System.in是InputStream的一个实例,我们可以使用任何具体的装饰器从键盘读取数据;例如,我们可以创建一个BufferedReader对象,并从键盘读取数据一行一次作为字符串。

上面的代码生成以下结果。

例子

以下代码说明如何将System.in对象与BufferedReader一起使用。程序不断提示用户输入一些文本,直到用户输入Q或q退出程序。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    String text = "q";
    while (true) {
      System.out.print("Please type a message (Q/q to quit) and press enter:");
      text = br.readLine();
      if (text.equalsIgnoreCase("q")) {
        System.out.println("We have  decided to exit  the   program");
        break;
      } else {
        System.out.println("We typed: " + text);
      }
    }
  }
}

如果我们想要标准输入来自一个文件,我们必须创建一个输入流对象来表示该文件,并使用System.setIn()方法设置该对象,如下所示。

FileInputStream fis  = new FileInputStream("stdin.txt"); 
System.setIn(fis); 
// Now  System.in.read() will read   from  stdin.txt file

上面的代码生成以下结果。

标准错误设备

标准错误设备用于显示任何错误消息。Java提供了一个名为System.err的PrintStream对象。我们使用它如下:

System.err.println("This is  an  error message.");

标签:Java,io,java,System,IO,new,import,一百六十五,out
From: https://blog.csdn.net/2301_78772942/article/details/140450268

相关文章

  • Javase-5.逻辑控制的习题
    1.根据年龄,来打印出当前年龄的人是少年(低于18),青年(19-28),中年(29-55),老年(56以上)Scannersc=newScanner(System.in);intage=sc.nextInt();if(age>0&&age<=18){System.out.println("是少年");}elseif(age>=19&&......
  • Java中的序列化与反序列化
    序列化与反序列化的定义序列化(Serialization)与反序列化(Deserialization)是编程中常见的两个概念,它们主要涉及到将数据结构或对象状态转换为可以存储或传输的格式,以及将存储或传输的格式转换回原始的数据结构或对象状态的过程。这两个过程在数据持久化、网络通信、对象深拷......
  • Java进度1
    一、IDEA1、成功下载IDEA,学会如何建立项目、模块、包及类2、在IDEA中成功运行第一个代码,如下:二、算术运算符与转换1、算术运算符的认识(+-*/%)以及简单练习需要注意的是//整数计算只能得出整数//有小数参与计算得出的结果可能不精确,如下图得出:2、隐式转换:取值范围小......
  • 介绍自动驾驶的感知任务--3D Occupancy Semantic Prediction
    介绍自动驾驶感知任务中的--3DOccupancySemanticPrediction什么是Occupancy自动驾驶领域,按照传统会分为perception,prediction,planning和control四大部分,有时会加上map。其中最为重要的就是perception,也是目前自动驾驶的瓶颈所在,如果感知算法给了下游任务错误的视觉信息,......
  • Java语言程序设计——篇四(1)
    类和对象面向对象概述面向过程与面向对象面向对象基本概念面向对象的基本特征面向对象的优势及应用为对象定义类类的修饰符成员变量成员变量-修饰符构造方法⭐️成员方法成员方法-修饰符例题讲解⚠️理解栈和堆面向对象概述两种程序设计方法结构化程序设计,典型代表......
  • Java语言程序设计——篇四(2)
    类和对象方法设计定义和使用方法访问方法和修改方法方法的调用方法参数的传递✨方法重载✨构造方法(构造器)......
  • [深入理解Java虚拟机]线程
    状态转换Java语言定义了6种线程状态,在任意一个时间点中,一个线程只能有且只有其中的一种状态,并且可以通过特定的方法在不同状态之间转换。这6种状态分别是:新建(New):创建后尚未启动的线程处于这种状态,运行(Runnable):包括操作系统线程状态中的Running和Ready,也就是处于此状态......
  • The 2022 ICPC Asia Shenyang Regional Contest
    Preface本来以为今天有多校的,但到了机房发现并没有,索性就随便找了场比赛VP了然后经典开场三线红温,签了3个题后徐神被一个string关住了(后面发现他犯了个极其弱智的错误导致坐牢一整场),祁神被构造F关了,然后我写A的分类讨论写的很红温中间排名一度经典俯冲铁牌区,但好在最后......
  • asyncio/trio fastdfs python client
    Codets.py#!/usr/bin/envpython"""FastDFS并发测试脚本Usage::$python<me>.py200--show"""importfunctoolsimportitertoolsimportjsonimportosimportpickleimportsysimporttimefrompathlibimportPathfr......
  • javap和字节码
    javap字节码的基本信息publicclassTest{privateintage=10;publicintgetAge(){returnage;}}在class文件的同级目录下输入命令javap-v-pTest.class来查看一下输出的内容//字节码文件的位置Classfile/D:/Code/code/JavaCod......