Java 日看一类(46)之IO包中的PrintStream

MoveIt2 Servo实战:解锁UR机械臂在ROS2中的实时遥操作与动态响应 本文深入探讨了MoveIt2 Servo在UR机械臂实时遥操作中的应用,展示了如何通过ROS2实现毫秒级动态响应。文章详细解析了Servo的核心价值、环境配置、控制器适配及高级调优技巧,特别适用于需要高精度控制的工业场景,如VR手术训练和汽车装配线。 阅读详情

该类继承自FilterOutputStream,完成了Appendable,Closeable接口

该类引入了如下包:

import java.util.Formatter;
import java.util.Locale;
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
import java.nio.charset.UnsupportedCharsetException;



该类的类头注释如下:

/**
 * A <code>PrintStream</code> adds functionality to another output stream,
 * namely the ability to print representations of various data values
 * conveniently.  Two other features are provided as well.  Unlike other output
 * streams, a <code>PrintStream</code> never throws an
 * <code>IOException</code>; instead, exceptional situations merely set an
 * internal flag that can be tested via the <code>checkError</code> method.
 * Optionally, a <code>PrintStream</code> can be created so as to flush
 * automatically; this means that the <code>flush</code> method is
 * automatically invoked after a byte array is written, one of the
 * <code>println</code> methods is invoked, or a newline character or byte
 * (<code>'\n'</code>) is written.
 *
 * <p> All characters printed by a <code>PrintStream</code> are converted into
 * bytes using the platform's default character encoding.  The <code>{@link
 * PrintWriter}</code> class should be used in situations that require writing
 * characters rather than bytes.
 *
 * @author     Frank Yellin
 * @author     Mark Reinhold
 * @since      JDK1.0
 */

大意如下:

PrintStream相对于其他的输出流增加了一些实用功能,即高效方便地打印出多种类型数据的表示形式

同时也提供两种额外的功能

不同于其他输出流,PrintStream从不抛出IOException;作为替代,异常情况下仅仅设置一个内部的标志位

这个标志位可以被checkError方法检测

可供选择的功能:PrintStream可以被创建为自动刷新模式,这种情况下意味着flush方法将会在byte数组被写入,或println方法被调用后,或者是被写入一个新行符(或者byte'\n')后自动调用

全部被PrintStream打印出的字符将会使用底层系统默认的字符解码方式解码为byte

PrintWriter类应该在更需要写出字符类的情况下使用



该类含有如下的成员变量:

自动刷新标志位

private final boolean autoFlush;

当前流是否报错标志位

private boolean trouble = false;

格式控制

private Formatter formatter;

内部输出流(文本和字符输出流)

private BufferedWriter textOut;
private OutputStreamWriter charOut;

关闭标志位(防止多次关闭

private boolean closing = false;


该类含有如下的成员方法:

在PrintStream初始化前先显示声明requireNonNull,避免系统创建额外的依赖关系(其他的默认方法),返回对象或者空指针信息

private static <T> T requireNonNull(T obj, String message) {
    if (obj == null)
        throw new NullPointerException(message);
    return obj;
}

返回字符串所使用字符集

private static Charset toCharset(String csn)
    throws UnsupportedEncodingException//使用编码方式不支持
{
    requireNonNull(csn, "charsetName");//判定是否为空
    try {
        return Charset.forName(csn);//返回字符集名称
    } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
        // UnsupportedEncodingException should be thrown
        throw new UnsupportedEncodingException(csn);
    }
}

私有构造函数(指定自动刷新功能和输出流)

private PrintStream(boolean autoFlush, OutputStream out) {
    super(out);
    this.autoFlush = autoFlush;
    this.charOut = new OutputStreamWriter(this);//注意这里的封装嵌套
    this.textOut = new BufferedWriter(charOut);
}

私有构造函数(指定自动刷新功能、输出流、以及字符集

private PrintStream(boolean autoFlush, OutputStream out, Charset charset) {
    super(out);
    this.autoFlush = autoFlush;
    this.charOut = new OutputStreamWriter(this, charset);//指定输出流的字符集
    this.textOut = new BufferedWriter(charOut);
}

私有构造函数(上个构造函数相同)

private PrintStream(boolean autoFlush, Charset charset, OutputStream out)
    throws UnsupportedEncodingException
{
    this(autoFlush, out, charset);
}

构造函数(非自动

public PrintStream(OutputStream out) {
    this(out, false);
}

构造函数(指定自动属性

public PrintStream(OutputStream out, boolean autoFlush) {
    this(autoFlush, requireNonNull(out, "Null output stream"));
}

构造函数(指定了编码字符集名称

public PrintStream(OutputStream out, boolean autoFlush, String encoding)
    throws UnsupportedEncodingException
{
    this(autoFlush,
         requireNonNull(out, "Null output stream"),
         toCharset(encoding));//获得字符串指定的字符集对象
}

构造函数(指定了写出文件路径,内嵌文件输出流,不自动刷新)

public PrintStream(String fileName) throws FileNotFoundException {
    this(false, new FileOutputStream(fileName));
}

构造函数(指定写出文件路径,不自动刷新,指定字符集

public PrintStream(String fileName, String csn)
    throws FileNotFoundException, UnsupportedEncodingException
{
    // ensure charset is checked before the file is opened
    this(false, toCharset(csn), new FileOutputStream(fileName));
}

构造函数(指定文件,内嵌文件输出流,非自动刷新

public PrintStream(File file) throws FileNotFoundException {
    this(false, new FileOutputStream(file));
}

构造函数(指定文件和字符集,非自动刷新

public PrintStream(File file, String csn)
    throws FileNotFoundException, UnsupportedEncodingException
{
    // ensure charset is checked before the file is opened
    this(false, toCharset(csn), new FileOutputStream(file));
}

判断流有效状态

private void ensureOpen() throws IOException {
    if (out == null)
        throw new IOException("Stream closed");
}

刷新输出流

public void flush() {
    synchronized (this) {
        try {
            ensureOpen();
            out.flush();
        }
        catch (IOException x) {
            trouble = true;
        }
    }
}

关闭输出流

public void close() {
    synchronized (this) {
        if (! closing) {
            closing = true;
            try {
                textOut.close();
                out.close();
            }
            catch (IOException x) {
                trouble = true;
            }
            textOut = null;//清空含有的资源,通过垃圾回收机制自动释放
            charOut = null;
            out = null;
        }
    }
}

检测错误信息

public boolean checkError() {
    if (out != null)
        flush();//清空输出流
    if (out instanceof java.io.PrintStream) {//检测内嵌输出流类型
        PrintStream ps = (PrintStream) out;
        return ps.checkError();
    }
    return trouble;//返回错误标识
}

设置错误标识

protected void setError() {
    trouble = true;
}

清除错误标识

protected void clearError() {
    trouble = false;
}

写出单个字节

public void write(int b) {
    try {
        synchronized (this) {
            ensureOpen();
            out.write(b);
            if ((b == '\n') && autoFlush)//如果当前输入为新行符且开启自动刷新
                out.flush();
        }
    }
    catch (InterruptedIOException x) {//IO中断异常
        Thread.currentThread().interrupt();//中断当前线程
    }
    catch (IOException x) {
        trouble = true;
    }
}

写出字节数组

public void write(byte buf[], int off, int len) {
    try {
        synchronized (this) {
            ensureOpen();
            out.write(buf, off, len);
            if (autoFlush)
                out.flush();
        }
    }
    catch (InterruptedIOException x) {
        Thread.currentThread().interrupt();
    }
    catch (IOException x) {
        trouble = true;
    }
}

私有写出字节数组

private void write(char buf[]) {
    try {
        synchronized (this) {
            ensureOpen();
            textOut.write(buf);//写入缓冲区
            textOut.flushBuffer();//刷新缓冲区
            charOut.flushBuffer();
            if (autoFlush) {
                for (int i = 0; i < buf.length; i++)
                    if (buf[i] == '\n')
                        out.flush();//从FilterOutputStream继承下来的内嵌输出流,刷新输出流
            }
        }
    }
    catch (InterruptedIOException x) {
        Thread.currentThread().interrupt();
    }
    catch (IOException x) {
        trouble = true;
    }
}

写出字符串

private void write(String s) {
    try {
        synchronized (this) {
            ensureOpen();
            textOut.write(s);
            textOut.flushBuffer();
            charOut.flushBuffer();
            if (autoFlush && (s.indexOf('\n') >= 0))
                out.flush();
        }
    }
    catch (InterruptedIOException x) {
        Thread.currentThread().interrupt();
    }
    catch (IOException x) {
        trouble = true;
    }
}

写出新行符(换行)

private void newLine() {
    try {
        synchronized (this) {
            ensureOpen();
            textOut.newLine();
            textOut.flushBuffer();
            charOut.flushBuffer();
            if (autoFlush)
                out.flush();
        }
    }
    catch (InterruptedIOException x) {
        Thread.currentThread().interrupt();
    }
    catch (IOException x) {
        trouble = true;
    }
}

打印bool类型

public void print(boolean b) {
    write(b ? "true" : "false");
}

打印字符

public void print(char c) {
    write(String.valueOf(c));
}

打印整形

public void print(int i) {
    write(String.valueOf(i));
}

打印长整型

public void print(long l) {
    write(String.valueOf(l));
}

打印浮点型

public void print(float f) {
    write(String.valueOf(f));
}

打印双精度型

public void print(double d) {
    write(String.valueOf(d));
}

打印字符数组

public void print(char s[]) {
    write(s);
}

打印字符串

public void print(String s) {
    if (s == null) {
        s = "null";
    }
    write(s);
}

打印对象

public void print(Object obj) {
    write(String.valueOf(obj));
}

默认打印方法,打印换行符

public void println() {
    newLine();
}

打印bool类后接新行符

public void println(boolean x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}

打印字符类后接新行符

public void println(char x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}

打印整形后接新行符

public void println(int x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}

打印长整型后接新行符

public void println(long x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}

打印浮点型后接新行符

public void println(float x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}

打印双精度型后接新行符

public void println(double x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}

打印字符数组后接新行符

public void println(char x[]) {
    synchronized (this) {
        print(x);
        newLine();
    }
}

打印字符串后接新行符

public void println(String x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}

打印对象后接新行符

public void println(Object x) {
    String s = String.valueOf(x);
    synchronized (this) {
        print(s);
        newLine();
    }
}

输出指定格式的一串对象数据

public PrintStream printf(String format, Object ... args) {
    return format(format, args);
}

输出指定格式的一串对象数据(包含地区敏感

public PrintStream printf(Locale l, String format, Object ... args) {
    return format(l, format, args);
}

使用指定格式字符串和参数将格式化字符写入该字符串(默认地区

public PrintStream format(String format, Object ... args) {
    try {
        synchronized (this) {
            ensureOpen();
            if ((formatter == null)
                || (formatter.locale() != Locale.getDefault()))//检测指定格式有效性
                formatter = new Formatter((Appendable) this);//限制绑定当前流
            formatter.format(Locale.getDefault(), format, args);//格式化当前字符串,并写入
        }
    } catch (InterruptedIOException x) {
        Thread.currentThread().interrupt();
    } catch (IOException x) {
        trouble = true;
    }
    return this;//返回当前流
}

指定格式和地区写入字符串

public PrintStream format(Locale l, String format, Object ... args) {
    try {
        synchronized (this) {
            ensureOpen();
            if ((formatter == null)
                || (formatter.locale() != l))
                formatter = new Formatter(this, l);
            formatter.format(l, format, args);
        }
    } catch (InterruptedIOException x) {
        Thread.currentThread().interrupt();
    } catch (IOException x) {
        trouble = true;
    }
    return this;
}

向流中增加字符序列

public PrintStream append(CharSequence csq) {
    if (csq == null)
        print("null");
    else
        print(csq.toString());
    return this;
}

添加字符序列特定段

public PrintStream append(CharSequence csq, int start, int end) {
    CharSequence cs = (csq == null ? "null" : csq);
    write(cs.subSequence(start, end).toString());
    return this;
}

添加单个字符

public PrintStream append(char c) {
    print(c);
    return this;
}



该类写入方式很简单,十分清晰,需要注意多层流的功能封装,以及打印时的及时输出。但是由于每次打印都要刷新,实际写出效率并不高,使用时需要注意。

TVS 和压敏电阻联合使用进行浪涌保护时,压敏电阻的压敏电压要低于TVS 的钳位电压 VC。 通过先让MOV接管,可以确保在大多数情况下,电压不会迅速上升到TVS二极管的钳位电压,从而保护TVS二极管免受持续高能量冲击的损害。总结来说,将MOV的压敏电压设置得低于TVS二极管的钳位电压,可以提供一种分级的保护机制,优化浪涌保护性能,同时保护敏感的TVS二极管不被过度的能量冲击损坏,并延长其使用寿命。MOV吸收的能量(Wmov):假设浪涌电流为10kA,MOV导通后将电压限制在300V,那么Wmov = Ipp * Vmov = 10kA * 300V = 3MW。例如,Vmov可以设定为275V。 阅读详情

相关推荐

Unity游戏Google Play闪退?可能是这个隐藏设置惹的祸(附完整解决方案)

本文深度解析Unity游戏在Google Play上出现闪退的疑难问题,指出其根源可能在于Google Play后台的“应用完整性”设置与游戏原生库的冲突。文章提供了从崩溃日志分析、本地与线上版本对比测试,到调整Unity构建设置、审查第三方插件以及优化分发包配置的系统性排查与根治方案,帮助开发者彻底解决这一隐蔽问题。

weixin_29213827的博客 239

java printstream_Java PrintStream 类

Java PrintStream 类在本教程中,我们将通过示例来学习Java PrintStream类及其print()和printf()方法。java.io包的PrintStream类可用于以通常可读的形式(文本)而不是字节写入输出数据。它继承了抽象类OutputStream。PrintStream 介绍与其他输出流不同,PrintStream将原始数据(整数,字符)转换为文本格式而不是字节。 ...

weixin_39950470的博客 791

uniapp实战:mui-player插件如何完美适配m3u8/flv直播流(附完整代码)

本文详细介绍了如何在Uniapp中使用mui-player插件完美适配m3u8和flv直播流,提供从基础配置到高级优化的全流程解决方案。通过动态加载策略、响应式布局和内存管理,实现跨平台稳定播放,适用于企业级直播应用开发。

weixin_29001655的博客 237

Java中的打印流PrintStream 和 PrintWriter

PrintStream和PrintWriter在Java中都是用于打印输出的类,但它们之间存在一些明显的区别。

m0_72244040的博客 703

SAP FI 提示没有为会计年度0 定义版本2025 GP626

SAP 错误 GP626 是一个常见的系统消息,通常表示某个会计年度的版本(如版本 0)未被定义或未激活。:在执行某些事务(如创建采购订单、过账凭证或维护成本中心)时,系统会检查相关版本是否已定义。的“Settings for Each Fiscal Year”界面中,选择一个已激活的会计年度。的“Settings for Each Fiscal Year”界面中,找到未激活的会计年度。:在控制范围(Controlling Area)中,未为指定的会计年度定义版本 0。如果没有,添加或复制现有年度的设置。

GAVIN 2493

告别纸上谈兵:在Xilinx Artix-7 FPGA上实测RGMII接口,从ILA抓包到PC Ping通全流程记录

本文详细记录了在Xilinx Artix-7 FPGA平台上实现RGMII接口的全过程,包括硬件配置、Vivado工程设置、双沿数据转换代码实现以及ILA波形分析。通过实测数据包捕获和PC端Ping测试,验证了千兆以太网通信的稳定性和可靠性,为工业通信网关等应用提供了实用参考。

weixin_33701251的博客 287

IO包中的其他对象

今天是一周的最后一天,也是学IO流的最后一上午。 打印流PrintStream PrintStream: 是一个字节打印流,System.out对应的类型就是PrintStream。 它的构造函数函数可以接收三种数据类型的值。 1,字符串路径。 2,File对象。

LLLAZY520的专栏 665

Ultralytics YOLO模块自定义与替换实战技巧

本文详细介绍了在Ultralytics YOLO框架中进行模块自定义与替换的实战技巧。通过从零开始添加全新模块(如注意力模块)到进阶替换现有模块(如增强版卷积),并涵盖模块注册、YAML配置、模型融合及ONNX导出等关键步骤,帮助开发者深度定制YOLO模型,以应对复杂检测任务与部署需求。

numpy6sculptor的博客 932

java system.out.println() 详解(其中包,类,对象的关系) system.out 和 printstream类的关系浅谈

java.lang.system.out.printlb() java.lang 与 system.out.println()的关系 首先lang是一个包,system是类,Out是对象,但却不是system类的对象,而是定义在system类中的printstream类的对象。

evan_0097的博客 9256

DRV8870电机驱动芯片原理与嵌入式多平台驱动开发

H桥电机驱动芯片是直流电机控制的核心硬件模块,其通过双MOSFET拓扑实现方向与速度的精确调控。工作原理基于电荷泵自举驱动、集成电流检测及多重硬件保护机制,技术价值体现在高集成度、宽压适配(4.5V–45V)与强鲁棒性。典型应用场景涵盖智能机器人执行器、工业自动化设备及电池供电移动终端。本文围绕DRV8870这一主流驱动芯片,深入解析其PH/EN与Dual PWM双控制模式、nFAULT故障响应机制,并结合Arduino/ESP32/STM32三大平台,提供可复用的跨MCU驱动库设计范式与FreeRTOS实

weixin_32251525的博客 658

AutoCAD 2024 LISP实用技巧:自定义快捷命令与高效绘图工具集

本文详细介绍了如何在AutoCAD 2024中部署和使用LISP脚本,打造高效绘图工具集。通过自定义快捷命令,如WFF(超级文字查找替换)、GQT(图层隔离)和LLTJ(智能长度统计),可大幅简化图层管理、文字编辑和测量统计等重复性操作,显著提升绘图效率。

gan8painter的博客 323

java.io.PrintStream

import java.io.BufferedOutputStream; import java.io.FileDescriptor; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintStream; public class TestPrintStre

ld513508088的专栏 889

WorkBuddy 连接百度网盘:能查能上传,但别指望 AI 帮你下载

本文介绍了如何通过WorkBuddy连接百度网盘实现文件管理功能。首先需要在百度开放平台创建应用并获取AppKey等凭证,然后通过拼接授权URL获取Access Token并填入WorkBuddy。实际测试表明,该连接器支持查看目录结构、搜索文件及上传文档,但无法实现文件下载和创建分享链接,原因是百度网盘MCP Server未提供相关接口。使用前需明确功能限制,该方案适合需要远程查阅网盘内容但不涉及下载的场景。

u011186532的专栏 2029

io流读取word文件 乱码_高效IO之Java IO体系(一)

更多Android高级架构进阶视频免费学习请点击:哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibili​space.bilibili.com个人觉得可以用“字节流操作类和字符流操作类组成了Java IO体系”来高度概括Java IO体系。借用几张网络图片来说明(图片来自 http://blog.youkuaiyun.com/zhangerqing/article/details/8466532 )** 基于...

weixin_39824801的博客 1444

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【java】打印流的基本实现及java.io.PrintStream、java.io.PrintWriter示例

1 package 打印流; 2 3 import java.io.File; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 import java.io.OutputStream; 7 8 class MyPrint{ 9 private OutputSt...

weixin_30888707的博客 88

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java的io_JAVA基础知识之IO——Java IO体系及常用类

Java IO体系个人觉得可以用“字节流操作类和字符流操作类组成了Java IO体系”来高度概括Java IO体系。借用几张网络图片来说明(图片来自http://blog.youkuaiyun.com/zhangerqing/article/details/8466532 )基于字节的IO操作基于字符的IO操作从上图可以看到,整个Java IO体系都是基于字符流(InputStream/OutputStre...

weixin_42315866的博客 150

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java使用处理流的优势是_Java 输入/输出——处理流(BufferedStream、PrintStream、转换流、推回输入流)...

关于使用处理流的优势,归纳起来就是两点:(1)对于开发人员来说,使用处理流进行输入/输出操作更简单;(2)使用处理流执行效率更高。1、BufferedInputStream/BufferedOutputStream和BufferedReader/BufferedWriterConstructorDescriptionCreates aBufferedInputStreamand saves i...

weixin_36011746的博客 923

PrintStream打印流

1 package file; 2 3 import java.io.File; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 import java.io.PrintStream; 7 8 /* 9 打印流:(printStream)将任意数据转换成字符串在打...

weixin_30896763的博客 136

java io的整体架构_高效IO之Java IO体系(一)

个人觉得可以用“字节流操作类和字符流操作类组成了Java IO体系”来高度概括Java IO体系。** 基于字节的IO操作**|image|image|基于字符的IO操作|image|image|从上图可以看到,整个Java IO体系都是基于字符流(InputStream/OutputStream) 和 字节流(Reader/Writer)作为基类,根据不同的数据载体或功能派生出来的。IO常用类文...

weixin_33547353的博客 116

高效IO之Java IO体系(一)

更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680 个人觉得可以用“字节流操作类和字符流操作类组成了Java IO体系”来高度概括Java IO体系。 借用几张网络图片来说明(图片来自 http://blog.youkuaiyun.com/zhangerqing/article/details/8466532 ) ** 基于字...

AndroidAlvin的博客 297

JAVA | 46 - IO | 打印流

PrintStream:打印字节流,解决输出数据时的功能不足。 装饰设计模式:讲一个功能不足的操作类,通过某些类的包装,形成更好用的类。 import java.io.*;public class Main { public static void main(String[] args) throws Exception { File fileA = new Fil

太尉司马懿的博客 210

Java IO

Java IO Java IO IO操作在编程中算是重要的知识点了。初学Java,借鉴网上前辈的经验,顺着前辈的思路,自己在demo上做了些修改,方便自己理解。 原博文地址:http://blog.youkuaiyun.com/yczz/article/details/38...

diutan1744的博客 118

Java 输入/输出——处理流(BufferedStream、PrintStream、转换流、推回输入流)

  关于使用处理流的优势,归纳起来就是两点:(1)对于开发人员来说,使用处理流进行输入/输出操作更简单;(2)使用处理流执行效率更高。 1、BufferedInputStream/BufferedOutputStream和BufferedReader/BufferedWriter ConstructorDescription BufferedInputStream​(InputStr...

weixin_30572613的博客 675

java.io包下常用类及常用方法介绍

JAVA基础知识之IO——Java IO体系及常用类 Java IO体系 个人觉得可以用“字节流操作类和字符流操作类组成了Java IO体系”来高度概括Java IO体系。 借用几张网络图片来说明(图片来自 http://blog.youkuaiyun.com/zhangerqing/article/details/8466532 )  基于字节的IO操作        基于字符的IO操作 ...

yimenglin的博客 841

java 流的转换_java 转换流 打印流 数据流

转换流InputStreamReader 和 OutputStreamWriter处理流用于将字节流转化成字符流,字符流与字节流之间的桥梁InputStreamReader 的作用是把 InputStream 转换成 ReaderOutputStreamWriter 的作用是把 OutputStream 转换成 Writer存在将字节流转换成字符流的转换流,因为字符流操作文本更简单不存在把字符流转...

weixin_39776787的博客 208

我的IO笔记2

为什么80%的码农都做不了架构师?>>> ...

weixin_34191734的博客 127
上一篇: Java 日看一类(45)之IO包中的PipedWriter
下一篇: Java 日看一类(47)之IO包中的PrintWriter
wyf95278
博客等级 码龄10年 38粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值