博主18年的互联网软件开发经验,从一名程序员小白逐步成为了一名架构师,我想通过平台将经验分享给大家,因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验,晚上进行用心精简、整理、总结、定稿,每天都会整理到12点,为了就是能让大家能够真正了解该技术栈的真正原理,最终从程序员成为一名真正的架构师,写的不一定是全站做好的,但是是全站最用心的~。
以后我会推出一些列的文章,每天都会更新,每天进步一点点,发布顺序【java的api基础、应用、实战】->【java开源技术栈及源码分析】->【java开源技术栈整合】->【java低代码开发平台的建设】
关注【架构师成长之道】 输入“java基础课程”,即可免费获得全套架构师全套课程
1.61 PrintStream
PrintStream
是 Java 中的一个类,用于打印各种数据类型的值,并提供了一系列方法来实现输出操作。它是 OutputStream
的子类,通常用于将输出发送到控制台或文件。
PrintStream 类的字段:
-
protected boolean autoFlush
:表示是否自动刷新缓冲区。 -
protected OutputStream out
:表示与此PrintStream
对象关联的底层输出流。
PrintStream 类的构造方法:
-
PrintStream(File file) throws FileNotFoundException
:使用指定的文件创建新的PrintStream
。 -
PrintStream(File file, String csn) throws FileNotFoundException, UnsupportedEncodingException
:使用指定的文件和字符集名称创建新的PrintStream
。 -
PrintStream(OutputStream out)
:创建新的PrintStream
,并将其输出发送到指定的输出流。 -
PrintStream(OutputStream out, boolean autoFlush)
:创建新的PrintStream
,并将其输出发送到指定的输出流,同时指定是否自动刷新缓冲区。 -
PrintStream(OutputStream out, boolean autoFlush, String encoding) throws UnsupportedEncodingException
:创建新的PrintStream
,将其输出发送到指定的输出流,同时指定是否自动刷新缓冲区和字符编码。
PrintStream 类的方法摘要(部分):
-
void print(boolean b)
:打印一个布尔值。 -
void print(char c)
:打印一个字符。 -
void print(double d)
:打印一个双精度浮点数。 -
void print(int i)
:打印一个整数。 -
void print(long l)
:打印一个长整数。 -
void print(Object obj)
:打印一个对象。 -
void print(String s)
:打印一个字符串。 -
void println()
:打印一个空行。 -
void println(boolean x)
:打印一个布尔值,并结束行。 -
void println(char x)
:打印一个字符,并结束行。 -
void println(double x)
:打印一个双精度浮点数,并结束行。 -
void println(int x)
:打印一个整数,并结束行。 -
void println(long x)
:打印一个长整数,并结束行。 -
void println(Object x)
:打印一个对象,并结束行。 -
void println(String x)
:打印一个字符串,并结束行。
PrintStream 类的简单使用例子:
javaCopy code import java.io.*; public class PrintStreamExample { public static void main(String[] args) { try { // 创建 PrintStream 对象并将其输出发送到控制台 PrintStream ps = new PrintStream(System.out); // 使用 print 方法打印不同类型的数据 ps.print("Hello, "); // 字符串 ps.print(123); // 整数 ps.print('A'); // 字符 ps.print(3.14); // 浮点数 ps.print(true); // 布尔值 ps.println(); // 换行 // 使用 println 方法打印不同类型的数据 ps.println("World!"); // 字符串 ps.println(456); // 整数 ps.println('B'); // 字符 ps.println(2.71); // 浮点数 ps.println(false); // 布尔值 // 关闭 PrintStream ps.close(); } catch (Exception e) { e.printStackTrace(); } } }
运行上述代码,将在控制台上看到如下输出:
arduinoCopy code Hello, 123A3.14true World! 456 B 2.71 false
应用场景
PrintStream
类可以应用于许多场景,包括但不限于:
-
控制台输出:将数据输出到控制台。
javaCopy code public class ConsoleOutputExample { public static void main(String[] args) { // 创建 PrintStream 对象并将其输出发送到控制台 PrintStream ps = System.out; // 使用 println 方法打印数据到控制台 ps.println("Hello, World!"); // 关闭 PrintStream ps.close(); } }
2.文件输出:将数据输出到文件。
javaCopy code import java.io.*; public class FileOutputExample { public static void main(String[] args) { try { // 创建 PrintStream 对象并将其输出发送到文件 PrintStream ps = new PrintStream(new File("output.txt")); // 使用 println 方法打印数据到文件 ps.println("Hello, World!"); // 关闭 PrintStream ps.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }
3.日志记录:将数据输出到日志文件中。
javaCopy code import java.io.*; public class LogOutputExample { public static void main(String[] args) { try { // 创建 PrintStream 对象并将其输出发送到日志文件 PrintStream ps = new PrintStream(new FileOutputStream("log.txt", true)); // 追加模式 // 记录日志 ps.println("[" + java.time.LocalDateTime.now() + "] Error occurred: Division by zero"); // 关闭 PrintStream ps.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }
4.网络输出:将数据输出到网络流中。
javaCopy code import java.io.*; import java.net.Socket; public class NetworkOutputExample { public static void main(String[] args) { try { // 创建 Socket 对象连接到指定服务器的指定端口 Socket socket = new Socket("localhost", 8080); // 获取输出流,并创建 PrintStream 对象将其输出发送到网络流 OutputStream outputStream = socket.getOutputStream(); PrintStream ps = new PrintStream(outputStream); // 发送数据到服务器 ps.println("Hello, Server!"); // 关闭 PrintStream 和 Socket ps.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }
这些是 PrintStream
类的一些常见用法示例,您可以根据具体需求进行调整和扩展。
实战例子
下面是一个简单的项目实战例子,展示如何使用 PrintStream
类来创建一个简单的命令行笔记应用。用户可以通过命令行输入笔记,并将笔记保存到文件中。
javaCopy code import java.io.*; import java.util.Scanner; public class NoteTaker { private static final String FILENAME = "notes.txt"; public static void main(String[] args) { try { // 创建文件输出流 FileOutputStream fileOutputStream = new FileOutputStream(FILENAME, true); // 追加模式 PrintStream printStream = new PrintStream(fileOutputStream); // 创建输入流 Scanner scanner = new Scanner(System.in); // 提示用户输入笔记 System.out.println("Enter your note (type 'exit' to quit):"); // 循环读取用户输入 while (true) { String input = scanner.nextLine(); if ("exit".equalsIgnoreCase(input.trim())) { break; } // 将笔记写入文件 printStream.println(input); } // 关闭流 printStream.close(); fileOutputStream.close(); scanner.close(); // 提示用户笔记已保存 System.out.println("Your notes have been saved."); } catch (IOException e) { e.printStackTrace(); } } }
这个简单的命令行笔记应用允许用户输入笔记,并将它们追加到名为 notes.txt
的文件中。用户可以输入 exit
来退出应用。