FileReader/FileWriter

"你好,阿米戈!昨天,里希给你介绍了 FileInputStreamFileOutputStream 。今天,我要给你讲解 FileReaderFileWriter 类。"

你可能已经猜到了,所有这些类都是 File 对象与 InputStreamOutputStreamReaderWriter"接口"之间的适配器。

"它们类似于 File 和 Reader/Writer 之间的适配器,但你只需将 String 对象传递给构造方法,而不是 File!"

"实际上,它们包含几个构造方法。File 和 String 对象都有构造方法。如果将 String 对象传递给构造方法,则构造方法将使用从所传递的 String 对象获取的文件路径来悄悄地创建 File 对象。"

这是为了提供方便。Java 创建者选取了这些类的最常见用例,并为所有这些用例编写了构造方法。这是非常方便的,你不觉得吗?

"哦,是的。非常方便。我同意。但是为什么我必须不断写入:"
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

"他们为什么不添加此用例?"

"问题在于,典型的 Java 程序不使用控制台。实际上,你几乎从不在控制台上读取任何内容。即使使用 Web 服务器、应用程序服务器或某些其他复杂的系统。"

但是,我们确实有用于将数据和文本输出到控制台的 PrintStream。因为这些"服务器应用程序"确实经常使用控制台来显示其状态、错误以及各种其他信息。

"明白了。你还可以使用 FileReader 和 FileWriter 复制文件吗?"

"可以,如果文件是文本文件(即文件由字符组成)。下面是一个示例:"

复制磁盘上的文件

复制代码
public static void main(String[] args) throws Exception
{
 FileReader reader = new FileReader("c:/data.txt");
 FileWriter writer = new FileWriter("c:/result.txt");

 while (reader.ready()) //as long as there are unread bytes in the input stream
 {
  int data = reader.read(); //Read one character (the char will be widened to an int)
  writer.write(data); //Write one character (the int will be truncated/narrowed to a char)
 }

 //Close the streams after we done using them
 reader.close();
 writer.close();
}

"几乎没有任何不同。"

"是的,差别极小。"

相关推荐
KaMeidebaby8 分钟前
卡梅德生物技术快报|抗体亲和力成熟工业化调控新机制:差异性浆细胞增殖工艺优化思路
java·开发语言·人工智能·算法·机器学习·架构·spark
luj_176838 分钟前
心形曲线轨迹控制三大关键技术
c语言·开发语言·c++·经验分享·算法
Mininglamp_27181 小时前
Claude Code 封禁中国开发者之后:本地 AI 编程工具的替代方案实测
开发语言·人工智能·windows·开源软件·ai-native
思麟呀1 小时前
C++17(三)if constexpr+折叠表达式
开发语言·c++
醉城夜风~1 小时前
Java详解经典算法题:接雨水(三种实现方案+原理剖析)
java·开发语言·算法
qydz112 小时前
杰理开发基础知识(3)
开发语言·嵌入式开发·杰理科技
贾斯汀frank2 小时前
C# 15 类型系统改进:Union Types
开发语言·windows·c#
阿里嘎多学长2 小时前
2026-07-10 GitHub 热点项目精选
开发语言·程序员·github·代码托管
CHHH_HHH2 小时前
【C++11】深入解析C++可变参数模板
开发语言·c++·算法·stl·c++11
数智化转型推荐官3 小时前
2026统一身份管理系统五大发展趋势解读
java·运维·微服务