资讯专栏INFORMATION COLUMN

Java 控制台信息保存到文件

RebeccaZhong / 2730人阅读

摘要:为了调试需要,需要把输出的信息重定向到文件进行保留,同时为了方便,在上的输出也得保留。在自定义的输出流中把输出的信息顺手保存到文件上一下。

为了调试需要,需要把Java输出的信息重定向到文件进行保留,同时为了方便,在Console上的输出也得保留。
原理很简单,就是自定义输出流,并使用System.setOutSystem.setErr进行设置。在自定义的输出流中把输出的信息顺手保存到文件上一下。
自定义一个用于分发的输出流:

DistributOutputStream.java

Javapublic class DistributOutputStream extends OutputStream {
    private OutputStream[] outputStreams = null;

    public DistributOutputStream(OutputStream[] outputStreams) {
        super();
        this.outputStreams = outputStreams;
    }

    @Override
    public void write(int v) throws IOException {
        for (OutputStream os : outputStreams) {
            try {
                os.write(v);
            } catch (IOException e) {
            }
        }
    }

    @Override
    public void close() throws IOException {
        for (OutputStream os : outputStreams) {
            try {
                os.close();
            } catch (IOException e) {
            }
        }
    }

    @Override
    public void flush() throws IOException {
        for (OutputStream os : outputStreams) {
            try {
                os.flush();
            } catch (IOException e) {
            }
        }
    }
}

自定义输出流中只是重写了write、flush和close方法,为了提高效率可以继续重写其他几个写多字节的write方法。所有这些方法都是对需要分发的输出流进行的操作,用了try,但为了避免循环调用catch之后没在打印信息了。

使用起来也很简单:

Javatry {
    // 创建一个文件流
    FileOutputStream fos = new FileOutputStream("console.log");
    // 先保存原来的标准输出
    OutputStream cos = System.out;
    // 创建一个分发流分发到文件流和标准输出
    DistributOutputStream osc = new DistributOutputStream(new OutputStream[] { fos, cos });
    // 分发流的打印方式
    PrintStream ps = new PrintStream(osc);
    // 设置到Err和Out
    System.setErr(ps);
    System.setOut(ps);
} catch (Exception e) {
    e.printStackTrace();
    return;
}

// 不出意外的话Console和文件里面都有Hello World~了
System.out.println("Hello World~");

打好收工~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64237.html

相关文章

  • 阿里云学生服务器操作攻略(超详细全套完整图文教程!菜鸟必看!)

    摘要:第一步如何以最低价格快速买到阿里云服务器如果我是学生,我如何通过买到价值的服务答用购买云服务器是阿里云学生专属活动。除阿里云外,大多数云服务器公司例如西部等同配置云服务器的价格都在左右。例如云服务器地址等。第一步:如何以最低价格快速买到阿里云服务器?1.1 如果我是学生,我如何通过¥9.9买到价值¥117的服务?答:用¥9.9购买云服务器ECS是阿里云学生专属活动。首先,你需要在阿里云官网注...

    FuisonDesign 评论0 收藏0
  • 阿里云ECS建网站(建站)超详细全套完整图文教程! [

    摘要:首先,你需要在阿里云官网注册账号。然后在阿里云官网首页点击校园扶持,经学生认证后便可购买每月的特价云服务器。图幕布拍照如果对备案还有疑问,请参考阿里云官方文档首次备案图文引导。具体操作方式请看阿里云官方介绍镜像部署或一键安装包部署。第一步:如何以最低价格快速买到阿里云服务器?1.1 如果我是学生,我如何通过¥9.9买到价值¥117的服务? 答:用¥9.9购买云服务器ECS是阿里云学生专属活动...

    andycall 评论0 收藏0
  • 阿里云ECS建站超详细全套完整图文教程

    摘要:首先,你需要在阿里云官网注册账号。然后在阿里云官网首页点击校园扶持,经学生认证后便可购买每月的特价云服务器。图幕布拍照如果对备案还有疑问,请参考阿里云官方文档首次备案图文引导。具体操作方式请看阿里云官方介绍镜像部署或一键安装包部署。第一步:如何以最低价格快速买到阿里云服务器? 1.1 如果我是学生,我如何通过¥9.9买到价值¥117的服务? 答:用¥9.9购买云服务器ECS是阿里云学生专属活...

    Yangyang 评论0 收藏0
  • 阿里云ECS建网站(建站)超详细全套完整图文教程!菜鸟必看!

    摘要:首先,你需要在阿里云官网注册账号。然后在阿里云官网首页点击校园扶持,经学生认证后便可购买每月的特价云服务器。图幕布拍照如果对备案还有疑问,请参考阿里云官方文档首次备案图文引导。具体操作方式请看阿里云官方介绍镜像部署或一键安装包部署。第一步:如何以最低价格快速买到阿里云服务器?1.1 如果我是学生,我如何通过¥9.9买到价值¥117的服务? 答:用¥9.9购买云服务器ECS是阿里云学生专属活动...

    Baoyuan 评论0 收藏0
  • Java编程思想》笔记12.通过异常处理错误

    摘要:一旦异常被抛出,就表明错误已无法挽回,也不能回来继续执行。这种在编译时被强制检查的异常称为被检查的异常。通过获取原始异常。构造器对于在构造阶段可能会抛出异常,并要求清理的类,最安全的做法是使用嵌套的子句。 点击进入我的博客 Java异常处理的目的在于通过使用少于目前数量的代码来简化大型、可靠的程序的生成,并且通过这种方式可以使你更自信:你的应用中没有未处理的错误。 12.1 概念 异...

    Vultr 评论0 收藏0

发表评论

0条评论

RebeccaZhong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<