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(); } } }
运行结果:
使用标准输出流实现日志
①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("我非常喜欢这个记录日志的工具哦!"); } }
运行结果: