Java基础进阶IO流-标准输出流

简介: Java基础进阶IO流-标准输出流

java.io.PrintStream:标准的字节输出流。默认输出到控制台。


示例代码:


public class PrintStreamTest {
    public static void main(String[] args) {
        // 联合起来写
        System.out.println("HelloWorld!");
        // 分开写
        PrintStream ps = System.out;
        ps.println("hello zahgnsan!");
        ps.println("hello lisi!");
        ps.println("hello wangwu!");
        // 标准输出流不需要手动close()关闭。
        // 可以改变标准输出流的输出方向吗? 可以
        /*
        // 这些是之前System类使用过的方法和属性。
        System.gc();
        System.currentTimeMillis();
        PrintStream ps2 = System.out;
        System.exit(0);
        System.arraycopy(....);
         */
        PrintStream p = null;
        try {
            // 标准输出流不再指向控制台,指向“log”文件。
            p = new PrintStream(new FileOutputStream("log"));
            //改变流的输出方向// 修改输出方向,将输出方向修改到"log"文件。
            System.setOut(p);
            //再输出
            p.println("hello zhangsan");
            p.println("hello lisi");
            p.println("hello wangwu");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}


运行结果:


0a2653c851af460fa595bd959398a8f1.png


使用标准输出流实现日志


①Logger.java


/*
* 日志工具
* */
public class Logger {
    /*
    * 记录日志的方法
    * */
    public static void Logger(String msg) {
    PrintStream ps = null;
    {
        try {
            // 指向一个日志文件
            ps = new PrintStream(new FileOutputStream("log.txt",true));
            //改变流输出方向
            System.setOut(ps);
            //写入指定格式数据,日期当前时间
            Date nowtime = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss SSS");
            String strtime = sdf.format(nowtime);
            System.out.println(strtime + ": " + msg);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}
}


②LogTest.java


public class LogTest {
    public static void main(String[] args) {
        Logger.Logger("调用了System类的gc方法,建议启动垃圾回收");
        Logger.Logger("调用了UserService的doSome方法");
        Logger.Logger("用户尝试登录,验证失败");
        Logger.Logger("调用了System类的gc方法,建议启动垃圾回收");
        Logger.Logger("调用了UseService的doSome方法");
        Logger.Logger("用户尝试进行登录,验证失败");
        Logger.Logger("我非常喜欢这个记录日志的工具哦!");
    }
}


运行结果:


2d65d23f6d4748949b924e4057485923.png

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
5天前
|
Java Unix Windows
|
2天前
|
安全 Java API
Java进阶-Java Stream API详解与使用
效、更易于维护的代码,同时享受到函数式编程带来的好处。
12 2
|
5天前
|
监控 Java
Java一分钟之-NIO:非阻塞IO操作
【5月更文挑战第14天】Java的NIO(New IO)解决了传统BIO在高并发下的低效问题,通过非阻塞方式提高性能。NIO涉及复杂的选择器和缓冲区管理,易出现线程、内存和中断处理的误区。要避免这些问题,可以使用如Netty的NIO库,谨慎设计并发策略,并建立标准异常处理。示例展示了简单NIO服务器,接收连接并发送欢迎消息。理解NIO工作原理和最佳实践,有助于构建高效网络应用。
8 2
|
5天前
|
Java 开发者
Java一分钟之-Java IO流:文件读写基础
【5月更文挑战第10天】本文介绍了Java IO流在文件读写中的应用,包括`FileInputStream`和`FileOutputStream`用于字节流操作,`BufferedReader`和`PrintWriter`用于字符流。通过代码示例展示了如何读取和写入文件,强调了常见问题如未关闭流、文件路径、编码、权限和异常处理,并提供了追加写入与读取的示例。理解这些基础知识和注意事项能帮助开发者编写更可靠的程序。
18 0
|
5天前
|
存储 安全 Java
Java一分钟之-集合框架进阶:Set接口与HashSet
【5月更文挑战第10天】本文介绍了Java集合框架中的`Set`接口和`HashSet`类。`Set`接口继承自`Collection`,特征是不允许重复元素,顺序不确定。`HashSet`是`Set`的实现,基于哈希表,提供快速添加、删除和查找操作,但无序且非线程安全。文章讨论了`HashSet`的特性、常见问题(如元素比较规则、非唯一性和线程安全性)以及如何避免这些问题,并提供了代码示例展示基本操作和自定义对象的使用。理解这些概念和注意事项能提升代码效率和可维护性。
13 0
|
5天前
|
存储 缓存 Java
Java IO 流详解
Java IO 流详解
18 1
|
5天前
|
存储 Java
Java的`java.io`包包含多种输入输出类
【5月更文挑战第2天】Java的`java.io`包包含多种输入输出类。此示例展示如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着分配一个`byte`数组存储流中的数据。通过`read()`方法读取数据,然后将字节数组转换为字符串打印。最后关闭输入流释放资源。`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
51 1
|
5天前
|
存储 Java
java IO接口(Input)用法
【5月更文挑战第1天】Java的`java.io`包包含多种输入输出类。此示例展示了如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着创建一个字节数组存储读取的数据,调用`read()`方法将文件内容填充至数组。然后将字节数组转换为字符串并打印,最后关闭输入流。注意,`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
22 2
|
5天前
|
存储 Java Linux
【Java EE】 文件IO的使用以及流操作
【Java EE】 文件IO的使用以及流操作
|
5天前
|
存储 缓存 安全
Java 中 IO 流、File文件
Java 中 IO 流、File文件