读者、作家 Java集合学习笔记

"嗨,阿米戈,又来了。"

"你好,Rishi。今天的课程是什么?"

"今天我要给大家介绍一下 Reader 和 Writer。"

"但是,Rishi,我几乎已经了解了他们的一切!"

"重复是学习之母"。

"嗯。嗯,好的。"

" ReaderWriter 类似于InputStreamOutputStream ,但它们处理的是字符,而不是字节。有时它们也被称为字符流,而不是 InputStreamOutputStream,它们被称为字节流。"

"一个是字符的,另一个是字节的。我记得。"

"不仅如此。这些类是专门为处理文本和字符串而设计的。今天我们将看看这些抽象类的两个经典实现:FileReaderFileWriter。"

"这是FileReader类的方法:"

方法 描述
int read() 从流中读取一个字符并将其返回。
int read(char cbuf[], int offset, int length) 读取字符数组,返回读取的字符数。
boolean ready() 如果可以从流中读取,则返回 true。
void close() 关闭输入流。
int read(java.nio.CharBuffer target) 将一组字符读入缓冲区。
int read(char cbuf[]) 读取字符数组。
long skip(long n) 跳过流中的 n 个字符。
String getEncoding() 返回流的当前编码。

"好吧,这些我几乎都知道。但是 FileWriter 呢?"

方法 描述
void write(int c) 将一个字符写入流。
void write(char cbuf[], int off, int len) 将字符数组写入流。
void write(char cbuf[]) 将字符数组写入流。
void write(String str, int off, int len) 将字符串的一部分写入流。
void write(String str) 将字符串写入流。
void flush() 将缓存在内存中的所有内容写入磁盘。
void close() 关闭流。
String getEncoding() 返回流的当前编码。

"我知道!"

"太好了,那我们再来看一个有趣的例子,等下迭戈会给你布置更多的任务。"

"如何逐行读取文件?你会写代码吗?"

"简单,看:"

代码

复制代码
// Create a list for storing the lines
List<String> list = new ArrayList<String>();

// Open the file
File file = new File("c:/document.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));

// As long as the file isn't empty, read from it
while (reader.ready())
{
 list.add(reader.readLine());
}

// Close the file
reader.close();

"嗯。不错。"

"还不错?一切都很简单,也很漂亮。承认吧,Rishi------我已经对 I/O 线程有了很好的掌握。那么这里还有什么可以改进的吗?"

"好吧,例如,你可以这样做:"

Rishi 的代码

复制代码
File file = new File("c:/document.txt");

List list = Files.readAllLines(file.toPath(), Charset.defaultCharset());

"嗯。那就更短了。就在今天,你把所有这些方法都告诉了我。我会重写它。谢谢你的教训,Rishi。"

"祝你好运,阿米戈。"

相关推荐
momo几秒前
JAVA基础知识
java·开发语言
恣逍信点23 分钟前
《凌微经》助读:本体论根基——“无之自悖”与“形性一体”
人工智能·科技·学习·程序人生·生活·交友·哲学
就叫_这个吧37 分钟前
Activiti7工作流入门+案例应用
java·activiti7·工作流
Z_W_H_1 小时前
minikube start --driver=docker --memory=4000mb出现PROVIDER_DOCKER_NEWGRP
java·docker·minikube
折哥的程序人生 · 物流技术专研1 小时前
第3篇:手写促销策略引擎(满减、打折、立减)
java·设计模式·策略模式·开闭原则·编程实战·扩充系列·促销引擎
郑州光合科技余经理1 小时前
海外外卖平台源码改造实战——多语言核心代码实现
java·开发语言·前端·后端·mysql·架构·php
耀耀_很无聊1 小时前
12_Redis Lua 脚本踩坑:为什么 tonumber(ARGV[x]) 会得到 nil?
java·redis·lua
奶油话梅糖2 小时前
锐捷常用命令速查表
java·网络·windows
code_std2 小时前
java WebSocket 使用
java·开发语言·websocket
落叶-IT2 小时前
Java Scanner 类精讲:控制台交互
java·开发语言