dede网站模板页在什么文件夹,网站备案后怎么建网站,wordpress 手机站,广告设计公司职位哈喽#xff0c;各位小伙伴们#xff0c;你们好呀#xff0c;我是喵手。运营社区#xff1a;C站/掘金/腾讯云#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点#xff0c;并以文字的形式跟大家一起交流#xff0c;互相学习#xff0c;一… 哈喽各位小伙伴们你们好呀我是喵手。运营社区C站/掘金/腾讯云欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点并以文字的形式跟大家一起交流互相学习一个人虽可以走的更快但一群人可以走的更远。 我是一名后端开发爱好者工作日常接触到最多的就是Java语言啦所以我都尽量抽业余时间把自己所学到所会的通过文章的形式进行输出希望以这种方式帮助到更多的初学者或者想入门的小伙伴们同时也能对自己的技术进行沉淀加以复盘查缺补漏。 小伙伴们在批阅的过程中如果觉得文章不错欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持 哈喽各位小伙伴们你们好呀我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点并以文字的形式跟大家一起交流互相学习一个人虽可以走的更快但一群人可以走的更远。 我是一名后端开发爱好者工作日常接触到最多的就是Java语言啦所以我都尽量抽业余时间把自己所学到所会的通过文章的形式进行输出希望以这种方式帮助到更多的初学者或者想入门的小伙伴们同时也能对自己的技术进行沉淀加以复盘查缺补漏。 小伙伴们在批阅的过程中如果觉得文章不错欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持 前言
在Java中当我们需要将字符或字符串写入到文件或其他输出流时就可以使用Writer类来实现。Writer类是Java.io包中的一个抽象类提供了一系列方法可以用来写入字符或字符串到输出流中。本文将介绍Writer类的相关知识包括源代码解析、应用场景案例、优缺点分析、类代码方法介绍和测试用例。
摘要
本文将介绍Java中的Writer类包括源代码解析、应用场景案例、优缺点分析、类代码方法介绍和测试用例。
Writer类
简介
Writer类是Java.io包中的一个抽象类用来将字符或字符串写入到输出流中。Writer类继承了Java.io.Writer类的一些方法并添加了一些新的方法来实现字符和字符串的输出。Writer类是抽象类不能直接使用需要使用他的子类对象来操作输出流。
Writer类的常用子类有
FileWriter用于将字符或字符串写入文件中。StringWriter用于将字符或字符串写入到字符串缓冲区中。
源代码解析
以下是Writer类的源代码
public abstract class Writer implements Appendable, Closeable, Flushable {protected Object lock;protected Writer() {this.lock this;}protected Writer(Object lock) {if (lock null) {throw new NullPointerException();} else {this.lock lock;}}public void write(int c) throws IOException {synchronized(this.lock) {this.writeImpl(new char[]{(char)c}, 0, 1);}}public void write(char[] cbuf) throws IOException {synchronized(this.lock) {this.writeImpl(cbuf, 0, cbuf.length);}}public abstract void write(char[] var1, int var2, int var3) throws IOException;public void write(String str) throws IOException {synchronized(this.lock) {this.writeImpl(str.toCharArray(), 0, str.length());}}public void write(String str, int off, int len) throws IOException {synchronized(this.lock) {this.writeImpl(str.toCharArray(), off, len);}}public Writer append(CharSequence csq) throws IOException {if (csq null) {this.write(null);} else {this.write(csq.toString());}return this;}public Writer append(CharSequence csq, int start, int end) throws IOException {CharSequence cs csq null ? null : csq;this.write(cs.subSequence(start, end).toString());return this;}public Writer append(char c) throws IOException {this.write(c);return this;}abstract void writeImpl(char[] var1, int var2, int var3) throws IOException;public void flush() throws IOException {synchronized(this.lock) {this.flushBuffer();}}public void close() throws IOException {synchronized(this.lock) {if (this.isOpen()) {this.flushBuffer();}this.closeImpl();}}void flushBuffer() throws IOException {}boolean isOpen() {return true;}void closeImpl() throws IOException {}
}以上是Writer类的源代码他提供了一系列方法可以用来写入字符或字符串到输出流中。
这是一个抽象类 Writer实现了 Appendable, Closeable, Flushable 三个接口。它的作用是提供一个通用的写操作接口它的实现类可以用于写入不同类型的数据到不同的目标如文件、流等。
该类有两个构造方法一个是无参构造函数另一个是传入一个 lock 对象的构造函数。它们用于指定该类在写操作时需要使用的锁对象。
该类有多个 write() 方法用于将数据写入目标。其中最常用的方法是 write(char[] cbuf, int off, int len)用于将指定的字符数组 cbuf 的子数组从 off 开始长度为 len写入到目标。
另外该类还实现了 Appendable 接口提供了 append() 方法可以将指定的字符序列或字符写入到目标中。在将字符序列转换为字符数组后它调用了 writeImpl(char[] var1, int var2, int var3) 方法实现了写操作。
在写操作时该类采用了同步的方式即使用 synchronized 关键字保证了多线程环境下的数据安全。此外该类还实现了 flush() 和 close() 方法用于刷新缓冲区和关闭流它们同样采用了同步的方式。其中closeImpl() 方法是子类可以覆盖的方法用于关闭流。 如下是部分源码截图 应用场景案例
Writer类主要用于将字符或字符串写入输出流中常用的子类包括FileWriter和StringWriter。下面是一些应用场景案例
将字符串写入文件中 FileWriter writer new FileWriter(output.txt);writer.write(hello world);writer.close();将字符数组写入文件中 char[] chars {h, e, l, l, o};FileWriter writer new FileWriter(output.txt);writer.write(chars);writer.close();将字符串写入字符串缓冲区中 StringWriter writer new StringWriter();writer.write(hello world);String str writer.toString();优缺点分析
Writer类的优点包括
可以将字符或字符串快速地写入到输出流中。提供了一系列方法可以满足不同的写入需求。
Writer类的缺点包括
由于是抽象类不能直接使用需要使用它的子类对象来操作输出流。在写入过程中可能会出现IO异常需要进行异常处理。
类代码方法介绍
Writer类的常用方法介绍
write(int c)将一个字符写入输出流中。write(char[] cbuf)将一个字符数组写入输出流中。write(char[] cbuf, int off, int len)将一个字符数组中从off位置开始的len个字符写入输出流中。write(String str)将一个字符串写入输出流中。write(String str, int off, int len)将一个字符串中从off位置开始的len个字符写入输出流中。append(CharSequence csq)将一个CharSequence对象追加到输出流中。append(CharSequence csq, int start, int end)将CharSequence对象中从start位置开始到end位置的字符追加到输出流中。append(char c)将一个字符追加到输出流中。flush()刷新输出流。close()关闭输出流。
测试用例
以下是针对Writer类的一个简单测试用例
package com.example.javase.se.classes;import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;/*** Author ms* Date 2023-11-05 18:39*/
public class WriterTest {private static final String FILENAME test.txt;public static void main(String[] args) {String strToWrite hello world;try (FileWriter writer new FileWriter(FILENAME)) {writer.write(strToWrite);writer.flush();} catch (IOException e) {e.printStackTrace();}String strFromFile ;try (FileReader reader new FileReader(FILENAME)) {char[] buffer new char[1024];int length reader.read(buffer);strFromFile new String(buffer, 0, length);} catch (IOException e) {e.printStackTrace();}if (strToWrite.equals(strFromFile.trim())) {System.out.println(The test passed.);} else {System.out.println(The test failed.);}}
}以上测试用例创建了一个名为output.txt的文件并将字符串“hello world”写入到该文件中。然后从该文件中读取出刚刚写入的字符串并与预期字符串进行比较如果相等则表示测试通过。
测试结果 根据如上测试用例本地测试结果如下仅供参考你们也可以自行修改测试用例或者添加更多的测试数据或测试方法进行熟练学习以此加深理解。 测试代码分析 根据如上测试用例在此我给大家进行深入详细的解读一下测试代码以便于更多的同学能够理解并加深印象。
这段代码演示了如何使用Java的FileWriter和FileReader类写入和读取文件。具体来说代码中定义了一个常量FILENAME表示要进行读写的文件名为test.txt。
在main方法中首先设置要写入文件的字符串strToWrite然后使用try-with-resources语句创建一个FileWriter对象并调用其write方法写入字符串。最后使用flush方法将缓冲区中的内容刷新到文件中。
接下来代码中使用try-with-resources语句创建一个FileReader对象并使用read方法读取文件中的内容。读取过程中将内容存储到一个字符数组buffer中然后根据读取的长度创建一个新的字符串strFromFile。
最后代码比较写入的字符串strToWrite和从文件中读取的字符串strFromFile是否一致如果一致则输出The test passed.“否则输出The test failed.”。 小结
本文介绍了Java中的Writer类该类主要用于将字符或字符串写入到输出流中是Java.io包中的一个抽象类。Writer类的常用子类有FileWriter和StringWriter在应用场景中可以将字符串或字符数组写入文件或字符串缓冲区。本文详细介绍了Writer类的源代码解析、应用场景案例、优缺点分析以及类代码方法介绍。最后本文给出了一个针对Writer类的简单测试用例。
总结
本文介绍了Java中的Writer类该类是Java.io包中的一个抽象类用于将字符或字符串写入到输出流中。Writer类的常用子类有FileWriter和StringWriter在应用场景中可以将字符串或字符数组写入文件或字符串缓冲区。本文详细介绍了Writer类的源代码解析、应用场景案例、优缺点分析以及类代码方法介绍。同时本文还提供了一个针对Writer类的简单测试用例。通过本文的学习读者可以更好地熟悉和掌握Writer类的使用。
… …
文末
好啦以上就是我这期的全部内容如果有任何疑问欢迎下方留言哦咱们下期见。
… …
学习不分先后知识不分多少事无巨细当以虚心求教三人行必有我师焉
wished for you successed ⭐️若喜欢我就请关注我叭。
⭐️若对您有用就请点赞叭。
⭐️若有疑问就请评论留言告诉我叭。
… …
文末
好啦以上就是我这期的全部内容如果有任何疑问欢迎下方留言哦咱们下期见。
… …
学习不分先后知识不分多少事无巨细当以虚心求教三人行必有我师焉
wished for you successed ⭐️若喜欢我就请关注我叭。
⭐️若对您有用就请点赞叭。
⭐️若有疑问就请评论留言告诉我叭。