Skip to content

Latest commit

 

History

History
221 lines (143 loc) · 6.09 KB

File metadata and controls

221 lines (143 loc) · 6.09 KB

Java PrintStream

原文: https://www.programiz.com/java-programming/printstream

在本教程中,我们将在示例的帮助下学习 Java PrintStream类及其print()printf()方法。

java.io包的PrintStream类可用于以通常可读的形式(文本)而不是字节写入输出数据。

它扩展了抽象类OutputStream

The PrintStream class is a subclass of the Java OutputStream.


PrintStream的工作原理

与其他输出流不同,PrintStream将原始数据(整数,字符)转换为文本格式而不是字节。 然后,它将格式化的数据写入输出流。

而且,PrintStream类不会引发任何输入/输出异常。 相反,我们需要使用checkError()方法来查找其中的任何错误。

注意PrintStream类还具有自动刷新功能。 这意味着它将在以下情况之一下强制输出流将所有数据写入目标:

  • 如果在打印流中写入了换行符\n
  • 如果调用println()方法
  • 如果在打印流中写入了字节数组

创建一个PrintStream

为了创建一个PrintStream,我们必须首先导入java.io.PrintStream包。 导入包后,便可以在此处创建打印流。

1.使用其他输出流

// Creates a FileOutputStream
FileOutputStream file = new FileOutputStream(String file);

// Creates a PrintStream
PrintStream output = new PrintStream(file, autoFlush); 

这里,

  • 我们创建了一个打印流,它将格式化的数据写入由FileOutputStream表示的文件中
  • autoFlush是一个可选的布尔参数,用于指定是否执行自动刷新

2.使用文件名

 // Creates a PrintStream
PrintStream output = new PrintStream(String file, boolean autoFlush); 

Here,

  • 我们创建了一个打印流,它将格式化的数据写入指定的文件
  • autoFlush是一个可选的布尔参数,用于指定是否执行自动刷新

注意:在两种情况下,PrintStream都使用某些默认字符编码将数据写入文件。 但是,我们也可以指定字符编码( UTF8UTF16 )。

// Creates a PrintStream using some character encoding
PrintStream output = new PrintStream(String file, boolean autoFlush, Charset cs); 

在这里,我们使用Charset类指定字符编码。 要了解更多信息,请访问 Java Charset(Java 官方文档)


PrintStream的方法

PrintStream类提供了各种方法,使我们可以将数据打印到输出。

print()方法

  • print() - 将指定的数据打印到输出流
  • println() - 将数据以及末尾的换行符打印到输出流

示例:带有System类的print()方法

class Main {
    public static void main(String[] args) {

        String data = "Hello World.";
        System.out.print(data);
    }
} 

输出

Hello World. 

在上面的示例中,我们尚未创建打印流。 但是,我们可以使用PrintStream类的print()方法。

您可能想知道这怎么可能。 好吧,让我解释一下这里发生了什么。

注意这一行,

System.out.print(data); 

Here,

  • System是负责执行标准输入/输出操作的最终类
  • out是在System类中声明的PrintStream类型的类变量

现在,由于outPrintStream类型的,因此我们可以使用它来调用PrintStream类的所有方法。

示例:带有PrintStream类的print()方法

import java.io.PrintStream;

class Main {
    public static void main(String[] args) {

        String data = "This is a text inside the file.";

        try {
            PrintStream output = new PrintStream("output.txt");

            output.print(data);
            output.close();
        }
        catch(Exception e) {
            e.getStackTrace();
        }
    }
} 

在上面的示例中,我们创建了一个名为output的打印流。 打印流与output.txt文件链接。

PrintStream output = new PrintStream("output.txt"); 

要将数据打印到文件,我们使用了print()方法。

在这里,当我们运行程序时,output.txt文件填充了以下内容。

This is a text inside the file. 

printf()方法

printf()方法可用于打印格式化的字符串。 它包含 2 个参数:格式化的字符串和参数。 例如,

printf("I am %d years old", 25); 

Here,

  • "I am %d years old",是格式化字符串
  • %d是格式化字符串中的整数占位符
  • 25 是一个参数

格式化的字符串包括文本和数据。 并且,参数替换了格式化字符串中的数据。

因此,%d25 取代。

示例:使用PrintStreamprintf()方法

import java.io.PrintStream;

class Main {
    public static void main(String[] args) {

        try {
            PrintStream output = new PrintStream("output.txt");

            int age = 25;

            output.printf("I am %d years old.", age);
            output.close();
        }
        catch(Exception e) {
            e.getStackTrace();
        }
    }
} 

在上面的示例中,我们创建了一个名为output的打印流。 打印流与文件output.txt链接。

PrintStream output = new PrintStream("output.txt"); 

要将格式化的文本打印到文件中,我们使用了printf()方法。

Here, when we run the program, theoutput.txtfile is filled with the following content.

I am 25 years old. 

PrintStream的其他方法

方法 内容描述
close() 关闭打印流
checkError() 检查流中是否有错误,并返回布尔结果
append() 将指定的数据附加到流

要了解更多信息,请访问 Java PrintStream(官方 Java 文档)