Java 日看一类(57)之IO包中的Writer类

10天轻松学习javase第6天上,学习Java io 和ASCII 10天轻松学习javase第4天下,内置类Java 日期时间 看两个转换的例子 package javaseof10day.day4.pm; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.Spring; public c... 阅读详情

该类无继承类,完成了Appendable、Closeable、Flushable接口

该类无引入包



该类的类头注释如下:

/**
 * Abstract class for writing to character streams.  The only methods that a
 * subclass must implement are write(char[], int, int), flush(), and close().
 * Most subclasses, however, will override some of the methods defined here in
 * order to provide higher efficiency, additional functionality, or both.
 *
 * @see Writer
 * @see   BufferedWriter
 * @see   CharArrayWriter
 * @see   FilterWriter
 * @see   OutputStreamWriter
 * @see     FileWriter
 * @see   PipedWriter
 * @see   PrintWriter
 * @see   StringWriter
 * @see Reader
 *
 * @author      Mark Reinhold
 * @since       JDK1.1
 */

大意如下:

该类是用于写出字符流的抽象类

该类的子类必须完成写出字符数组方法、刷新以及关闭流方法

然而大部分的子类都会覆写该类中声明的一些方法来提供更高的效率,或者添加一些新功能



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

写出缓冲区

private char[] writeBuffer;

默认缓冲区大小

private static final int WRITE_BUFFER_SIZE = 1024;

控制同步锁

protected Object lock;


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

默认构造方法:(仅绑定同步锁

protected Writer() {
    this.lock = this;
}

构造方法(给予同步锁进行绑定

protected Writer(Object lock) {
    if (lock == null) {
        throw new NullPointerException();
    }
    this.lock = lock;
}

写入单个字符

public void write(int c) throws IOException {
    synchronized (lock) {
        if (writeBuffer == null){//如果缓冲区未初始化
            writeBuffer = new char[WRITE_BUFFER_SIZE];
        }
        writeBuffer[0] = (char) c;
        write(writeBuffer, 0, 1);//将缓冲区中数据写入流中
    }
}

向流中写入字符数组

public void write(char cbuf[]) throws IOException {
    write(cbuf, 0, cbuf.length);
}

向流中写入字符数组区间

abstract public void write(char cbuf[], int off, int len) throws IOException;

向流中写入字符串

public void write(String str) throws IOException {
    write(str, 0, str.length());
}

向流中写入字符串区间

public void write(String str, int off, int len) throws IOException {
    synchronized (lock) {//线程同步
        char cbuf[];
        if (len <= WRITE_BUFFER_SIZE) {//判定需要写出的数据大小,如果比默认的大小大就不使用内部缓冲区,新建一个缓冲区
            if (writeBuffer == null) {
                writeBuffer = new char[WRITE_BUFFER_SIZE];
            }
            cbuf = writeBuffer;
        } else {    // Don't permanently allocate very large buffers.
            cbuf = new char[len];
        }
        str.getChars(off, (off + len), cbuf, 0);
        write(cbuf, 0, len);
    }
}

向缓冲区中添加字符序列

public Writer append(CharSequence csq) throws IOException {
    if (csq == null)
        write("null");
    else
        write(csq.toString());
    return this;
}

向缓冲区中添加字符序列部分段

public Writer append(CharSequence csq, int start, int end) throws IOException {
    CharSequence cs = (csq == null ? "null" : csq);//为空就写个空进去...
    write(cs.subSequence(start, end).toString());
    return this;
}

向缓冲区中添加单个字符

public Writer append(char c) throws IOException {
    write(c);
    return this;
}

刷新流

abstract public void flush() throws IOException;

关闭流

abstract public void close() throws IOException;



该类由于目前是字符输出流的顶级类,在append方法和write方法方面看着差别不是很大,但在后续使用中推荐使用append方法与flush组合效率比较高。同时该类的构造函数和其他流顶级类的构造函数都有一个特点:都对自己本身进行同步控制,同步在IO中占有重要的地位,与数据的准确性和效率紧密联系。

如果需要看一些实例的话,推荐StringWriter、BufferWriter和FilterWriter类

用VINS-Fusion跑通EuRoC数据集:Ubuntu22.04+ROS2环境下的保姆级评测指南 本文详细介绍了在Ubuntu22.04和ROS2 Humble环境下使用VINS-Fusion处理EuRoC数据集的完整流程。从环境配置、数据集转换到参数调优和性能评估,提供了一套全面的多传感器融合分析方案,帮助开发者在无人机精准定位场景中实现高效部署与优化。 阅读详情

相关推荐

解决windows10下无法安装.net framework 3.5(包括.net2.0和3.0)

入域电脑,win10系统中安装 .net framework 3.5(包括.net2.0和3.0)

God_me_1的博客 4万+

Java中Writer的常用类

Writer 抽象类 Wirter的常用方法 write(String str) write(String str,int off,int len) void close() void flush() FileWirte 继承 OutputWriter类 BufferedWriter 类 writer(); flush(); newLine(); //写入一个换行符。 B

Wonf的博客 5635

基于图神经网络的社交网络虚假账号检测系统 (Graph-based Fake Account Detection System, GFADS)

FOLLOWSRETWEETSSHAREDCOMMENTSLIKESMENTIONSUseruser_idusernamejoin_datebioavatar_urllocationverifiedis_fakeLOAD CSV这是决定模型性能的关键环节,需结合和。XXedge_indexy新账号缺乏历史数据和丰富关系。全网图可能包含数亿节点和数十亿边,难以直接训练。社交网络是动态变化的,虚假账号策略也在不断进化。获取大规模、高质量的真实/虚假账号标注数据非常困难。

Deng945201314的博客 1481

java--IO流

1、File类(文件) 一个File类对象可以表示具体的一个文件。 (1)创建文件 创建文本文件:如果文件不存在则创建,存在则创建失败; 创建单个文件夹:同上; 创建多级文件夹:同上。 import java.io.File; import java.io.IOException; public class Filedemo1 { public static void main(String[] args) { try { File file=new Fil

weixin_39274067的博客 338

RandLA-Net 调通代码1:Windows 11 + Tensorflow 2.4 + S3DIS数据集【踩坑+填坑】

TF不上进啊,学学pytorch

累了就要打游戏 2484

mapbox 从入门到精通 - 目录

欢迎大家来到gis分享者的《mapbox 从入门到精通》专栏。博主列出学习大纲,如果有什么问题,欢迎留言。

我哎GIS博客 5851

Java中writer类使用问题

Java 项目:APP、PC连接中转服务器,分别转发消息Writer类中,writer.flush()后没有close(),对当前writer重新new一个Writer类,再进行close()操作会抛出异常socket closedBufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()...

qq_27026783的博客 1871

LoRA 完整解析:从理论到实践

LoRA(低秩适应)是一种高效的大模型微调方法,通过添加少量可训练参数(低秩矩阵)来适配新任务,避免全参数微调的高成本。其核心是将权重更新ΔW分解为两个小矩阵B×A的乘积,大幅减少训练参数量(仅0.1-1%)。LoRA基于内在维度假设,通过低秩约束捕捉核心任务信息,兼具效率与效果。实际应用中,常用配置为秩r=16-32,目标模块选择注意力层的q_proj和v_proj,学习率比全参数微调大10倍(约1e-4)。优势包括参数高效(内存降低60-80%)、多任务适配灵活、保留预训练知识等,已成为大模型微调的主流

echo的博客 1414

Java 日看一类(23)之IO包中的FileWriter类

FileWriter继承自OutputStreamWriter无任何引入包类头注释如下:/** * Convenience class for writing character files. The constructors of this * class assume that the default character encoding and the default byte-buf...

github_37666068的博客 389

用 SAP XCO XLSX 模块优雅读 Excel:坐标、选择模式与实战案例全解析

SAP ABAP Cloud 中的 XCO XLSX 模块为 Excel 文件处理提供了官方解决方案。文章介绍了三个核心概念:通过 XCO_CP_XLSX=>DOCUMENT 获取文档句柄;使用 CL_XCO_XLSX_COORDINATE 坐标系统定位单元格;利用 Selection Pattern 精确读取数据区域。这些功能在 RAP 批量导入等业务场景中尤为实用,相比传统方案更加简洁可靠。文章还分享了真实项目中的最佳实践,如动态列定位和相对偏移技巧,帮助开发者构建更健壮的 Excel 导入逻辑。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 193

CesiumForUnreal实现地形等高线效果

CesiumForUnreal实现地形等高线效果

专注GIS开发 3438

Java之IO流

生活中,流有水流,河流等,它们是通过水管或者是河渠等管道或通道按一定方向流动形成的。 Java中的IO流和现实中的流很像,也是通过特定的管道,数据按一定的方向流动形成了IO流。这也是我们今天主要讲的内容。 Java中IO流是实现输入,输出的基础,可以方便的实现数据的输入和输出。 Java的IO流中常用到的一些类有,File,InputStream,OutputStream,FileInput...

weixin_30256505的博客 90

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[19/03/31-星期日] IO技术_四大抽象类_字符流( 字符输入流 Reader、 字符输出流 Writer )(含字符缓冲类)...

一、概念 Reader Reader用于读取的字符流抽象类,数据单位为字符。 int read(): 读取一个字符的数据,并将字符的值作为int类型返回(0-65535之间的一个值,即Unicode值)。如果未读出字符则返回-1(返回值为-1表示读取结束)。 void close() : 关闭流对象,释放相关系统资源。 1 /*字符输入流 Re...

weixin_30896763的博客 174

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java中IO体系

我认为可以用“字节流操作类”和“字符流从操作类”组成Java IO流体系 1,基于字节流: InputStream:FileInputStream、ByteArrayInputStream、StringBufferInputStream、SequenceInputStream、PipledInputStream、ObjectInputStream、FilterInputStream(Buffe...

Joker 138

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IO流(字节流主要用于读写二进制文件;字符流主要用于读写文本性文件)

1. File类 File类在java中表示(带路径的)文件或者目录 1).File常用属性和方法 1 public static void main(String[] args) { 2 3 4 5 // 给定路径创建File对象 6 7 // File file = new File("D:"+F...

weixin_30642305的博客 1575

JavaSE——IO流

以字节为单位,一个字节一个字节输出。

weixin_69032308的博客 198

[Java][IO流]IO流的定义/分类/本地文件的写入写出

2.操作文件的类型:字节流(所有的文件 包含音视频)和字符流(只能操作纯文本 txt)字节流:InputStream 字节输入流 OutputStream 字节输出流。1.可以把程序中的数据保存到文件中(写出数据)output。2.可以把本地文件的数据加载到程序中(读取数据)input。File对文件本身进行操作 IO流可以对文件具体进行操作。FileOutputStream操作本地文件的字节输出流。FileInputStream操作本地文件的字节输入流。1.流的方向:输出流和输入流。

XYC的学习经验博客 303

什么是IO流?

这里是修真院后端小课堂,每篇分享文从 【什么是IO流?】 大家好,我是IT修真院北京分院第27期的JAVA学员,一枚正直纯洁善良的java程序员。 今天给大家分享一下,修真院官网Java任务10,深度思考中的知识点———什么是IO流? 1.背景介绍 什么是流 流就是一系列的数据 当不同的介质之间有数据交互的时候,JAVA就使用流来实现。 数据源可以是文件,还可以是数据库,网络甚至是其他的程序。 比...

learning__java的博客 473

java-IO操作性能对比

在软件系统中,IO速度比内存速度慢,IO读写在很多情况下会是系统的瓶颈。 在java标准IO操作中,InputStream和OutputStream提供基于流的IO操作,以字节为处理单位;Reader和Writer实现了Buffered缓存,以字符为处理单位。 从Java1.4开始,增加NIO(New IO),增加缓存Buffer和通道Channel,以块为处理单位,是双向通道(可读可写,类似

可口可乐的博客 631

java io系列24之 BufferedWriter(字符缓冲输出流)

转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_24.html 更多内容请参考:java io系列01之 "目录" BufferedWriter 介绍 BufferedWriter 是缓冲字符输出流。它继承于Writer。 BufferedWriter 的作用是为其他字符输出流添加一些缓冲功能。 BufferedWrite

XINJing的专栏 779

IO流~字节流

在异常处理时提供finally块来执行所有清除操作。比如说IO流中的释放资源。FileOutputStream:文件输出流用于将数据写入File。FileInputStream:从文件系统中的文件获取输入字节。特点:被finally控制的语句一定会执行,除非JVM退出。为什么构造方法需要的是字节流,而不是具体的文件或者路径呢?字节流写数据如何实现追加写入呢?一般来说,IO流的分类是按照。字节流写数据如何实现换行呢?写完数据后,加换行符。

zhuozhuo1998的博客 298

IO流 课堂笔记

程序的运行都在内存中进行。在程序结束时,数据全部丢失。为了让操作后的数据永久保存下来,我们需要使用外部存储器来完成。那么,如何完成内存和外存之间的数据传输呢?我们可以使用输入输出(I/O)机制来完成。Java类库中提供了大量类,可以帮助我们从不同的设备读取数据,并保存或输出到不同设备中。这些类统一放在java.io java.nio中I表示input,意为输入;O表示Output,意为输出。

2301_76972581的博客 135

java 句柄无效_java.io.IOException: 句柄无效 异常是什么引起的

当前位置:IT大杂烩>Java>java.io.IOException: 句柄无效 异常是什么引起的java.io.IOException: 句柄无效 异常是什么引起的www.someabcd.com网友分享于:Jun 6, 2018 11:37:17 PM写了一个三大框架集成的项目,项目能正常运行,但重新部署时会抛异常: log4j:ERROR Failed to flush ...

weixin_35810223的博客 1278

java io printwriter_java io系列25之 PrintWriter (字符打印输出流)

1 packagejava.io;23 importjava.util.Objects;4 importjava.util.Formatter;5 importjava.util.Locale;6 importjava.nio.charset.Charset;7 importjava.nio.charset.IllegalCharsetNameException;8 importjava.nio....

weixin_36378222的博客 336
上一篇: Java 日看一类(56)之IO包中的StringWriter类
下一篇: Java 日看一类(58)之IO包中的SyncFailedException、UncheckIOException和UnSupportedEncodingException异常类
wyf95278
博客等级 码龄10年 38粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值