Java IO流(FileReader,FileWriter)讲解

2023-11-09

FileReader和FileWriter类是用来读取/写入字符文件的便捷类。
使用FileReader、FileWriter 可以实现文本文件的复制。
对于非文本文件(视频文件、音频文件、图片),只能使用字节流!

字符输入流(FileReader)

1)字节流和字符流整体上操作得步骤一样,会了字节流得操作,学字符流也就轻而易举了。
2)使用FileReader和FileWriter可以实现文本文件得复制。
3)对于非文本文件(图片,视频,音频)只能使用字节流,而 文本文件就可以使用FileReader和FileWriter。
4)FileReader类从InputStreamReader类继承而来。该类按字符读取流中数据。

FileReader构造方法

在这里插入图片描述

主要方法:

int read(); // 读取单个字符。返回作为整数读取的字符,如果已达到流末尾,则返回 -1。

int read(char []cbuf);//将字符读入数组。返回读取的字符数。如果已经到达尾部,则返回-1。

void close();//关闭此流对象。释放与之关联的所有资源。

代码解释

package com.ghl.demo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileRead {
	public static void main(String args[]) {
        try {
			File file = new File("Hello1.txt");
			FileReader reader = new FileReader(file);
			char[] ch = new char[5];
			int len;
			while((len=reader.read(ch)) != -1) {
				for (char c : ch) {
					System.out.print(c); //输出结果qwertyuiopasdfghjkfg
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			
		}
        }
}

字符输出流(FileWriter)

1)public class FileWriter extends OutputStreamWriter:用来写入字符文件的便捷类。
2)FileWriter 用于写入字符流,要写入原始字节流,使用 FileOutputStream。

构造方法

在这里插入图片描述

主要方法

void write(String str);//写入字符串。当执行完此方法后,字符数据还并没有写入到目的文件中去。此时字符数据会保存在缓冲区中,若想使数据保存到目的文件中去,则需要适应刷新缓冲的的方法flush();

viod flush(); //刷新该流中的缓冲。将缓冲区中的字符数据保存到目的文件中去。

viod close(); //关闭此流。在关闭前会先刷新此流的缓冲区。

操作步骤

1)创建一个可以往文件中写入字符数据的字符流输出流对象 FileWriter
2)创建时必须明确文件的目的地,如果文件不存在,就会自动创建。如果文件存在,则会覆盖。
3)当路径错误时会抛异常
4)当在创建时加入true参数,会实现对文件的续写,使用false则会实现对文件的覆盖。
FileWriter fw = new FileWriter(“F:\Java\demo.txt”,true);
5)调用该对象的write方法,向文件写入字符

代码解释

package com.ghl.demo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import org.junit.Test;

public class FileWrite {
	@Test
public void TestFileWrite() {
		FileReader reader = null;
		FileWriter write = null;
	try {
		File src =new File("Hello1.txt");//这个是输入流对应的文件  一定要存在  否则抛出异常
		 reader=new FileReader(src);
		 File desc=new File("Hello2.txt");//这个是输出流对应得文件  可以不存在  自动创建
		 write=new FileWriter(desc);
		char[] ch=new char[20];
		int len;
		while((len=reader.read(ch))!=-1) {
			write.write(ch, 0, len);
		}
	} catch (IOException e) {
		e.printStackTrace();
	}finally {
		try {
			write.close();
			reader.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java IO流(FileReader,FileWriter)讲解 的相关文章

  • chatGPT高考作文

    百花齐放 春满人间 吹灭别人的灯 并不会让自己更加光明 阻挡别人的路 也不会让自己行得更远 这是一句古老而智慧的话语 告诉我们要尊重和包容他人 要与人和睦相处 要共同进步 同样的道理 也适用于文化的交流和发展 文化是一个民族的灵魂 是一个国

随机推荐

  • 华为OD机试真题-不爱施肥的小布

    题目描述 某农场主管理了一大片果园 fields i 表示不同果林的面积 单位 m 2 现在要为所有的果林施肥且必须在n天之内完成 否则影响收成 小布是果林的工作人员 他每次选择一片果林进行施肥 且一片果林施肥完后当天不再进行施肥作业 假设
  • C++复合类型

    1 数组 数组声明应该指出元素类型 数组名和元素个数 数组的初始化需要遵循以下规则 a 只有定义数组时才能使用初始化 此后就不能使用了 也不能将一个数组赋给另一个数组 int narray1 4 1 2 3 4 int narray2 4
  • 操作系统 实验二 银行家算法

    题目描述 已知进程 P0 P1 P2 P3 P4 有三类系统资源A B C的数量分别为10 5 7 在T0时刻的资源分配情况如下图所示 1 若进程P1请求资源 发出请求向量Request1 1 0 2 编写程序用银行家算法判断系统能否将资源
  • 【javascript-基础小练习】角度转弧度,已知角度90,转成弧度?

    角转弧度的公式为 jiao 180 pai hu 假设pai的值为 3 14
  • 数据库的事务及变量声明方法

    事务 简单来说事务就是为了保持数据一致性的一种手段 在事务中的sql语句作为一个整体一起向系统提交 要么都执行 要么都不执行 可以回滚到原来的状态 事务的语法 开始事务 begin tran 或者transaction 提交事务 commi
  • Spring为什么不推荐你使用@Autowired ?

    Spring为什么不推荐你使用 Autowired 我们总能发现当使用IDEA写代码的时候 Autowired注解会报黄 我们把鼠标悬停在上面 可以看到这个如下图所示的警告信息 当我们按住alt 回车键 idea就会帮我们修改成这样 我向来
  • 微服务架构

    3 注册中心与服务发现 前言 1 服务发现基础知识 1 1 注册中心与服务发现的联系 1 2 使用 DNS 与负载均衡器发现服务的弊端 1 3 云中的服务发现应该具备的特点 1 4 服务发现架构 1 5 服务治理的概念 1 6 服务注册的概
  • Linux服务器(centos7)中Word转换PDF,文档出现中文乱码或方格【亲测可用,已解决】

    提示 在centos服务器使用aspose word转换word文件为pdf的时候只有中文乱码或则方格 但是在win服务器上使用可以正常转换 本次文章主要解决字体缺失问题 目录 前言 一 在linux服务器上生成的pdf都是这种格式的 二
  • 信号和槽函数的扩展

    信号和槽函数的扩展 一个信号连接多个槽函数 一个槽函数连接多个信号 信号连接信号 一个信号可以连接多个槽函数 发送一个信号有多个处理动作 需要写多个connect 连接 槽函数的执行顺序和信号的发射顺序相同 QT5中 信号的接收者可以是一个
  • C++primer总结

    目录 第一章 数据处理 2 整形 2 第二章 复合类型 3 数组 3 字符串 4 枚举 5 指针 5 第三章 函数的使用 6 内联函数 6 默认参数 6 函数的重载 7 函数的模板 7 第四章 内存模型和名称空间 7 文件的单独存放 7 变
  • Transaction rolled back because it has been marked as rollback-only

    http hsyd iteye com blog 586772 错误信息 Transaction rolled back because it has been marked as rollback only 原因 事务提交多次 检查代码
  • 小程序无法获取头像和昵称(已解决)

    从基础库 2 21 2 开始支持 当小程序需要让用户完善个人资料时 可以通过微信提供的头像昵称填写能力快速完善 根据相关法律法规 为确保信息安全 由用户上传的图片 昵称等信息微信侧将进行安全检测 组件从基础库2 24 4版本起 已接入内容安
  • Python+Selenium+phantomjs实现网页模拟登录和截图

    Python Selenium phantomjs实现网页模拟登录和截图 本文全部操作均在windows环境下 安装 Python Python是一种跨平台的计算机程序设计语言 它可以运行在Windows Mac和各种Linux Unix系
  • C++ Primer 学习笔记 第十章 泛型算法

    标准库容器很小 并未给每个容器添加大量功能 而是提供了一组算法 这些算法大多数都独立于任何特定的容器 这些算法是通用的 或者说是泛型的 generic 可用于不同类型容器和元素 大多数泛型算法定义在头文件algorithm中 头文件numb
  • Linux 用户管理

    一 useradd命令 创建普通用户的 语法 c lt 备注 gt 加上备注文字 备注文字会保存在passwd的备注栏位中 d lt 登入目录 gt 指定用户登入时的启始目录 D 变更预设值 e lt 有效期限 gt 指定帐号的有效期限 f
  • ETL工具——kettle实现简单的数据迁移

    文章目录 1 Kettle概念 2 安装与启动 3 常用组件 4 具体案例 4 1 数据库连接 3 2 sql脚本 3 3 表输入 3 4 字段选择 3 5 表输出 1 Kettle概念 Kettle是一款国外开源的ETL工具 纯java编
  • pnPm——比npm&yarn更胜一筹的包管理器

    官网 Fast disk space efficient package manager pnpm 安装 在 POSIX 系统上 即使没有安装 Node js 也可以使用以下脚本安装 pnpm curl fsSL https get pnp
  • 常用的编译器(不限制编程语言、不限制平台)

    在提到这个问题之前我们应该了解编译器是什么 简单来说 编译器就是将一种语言 通常为高级语言 翻译为另一种语言 通常为低级语言 的程序 一个现代编译器的主要流程有 源代码 gt 预处理器 gt 编译器 gt 目标代码 gt 链接器 gt 可执
  • Spring Cloud Hystrix

    服务容错保护 Spring Cloud Hystrix 在微服务的架构中 存在着很多的服务单元 若一个单元出现故障 就很容易因依赖关系而引发故障蔓延 最终导致整个系统瘫痪 这样的架构相较传统的架构更加不稳定 为了解决这样的问题 产生了断路器
  • Java IO流(FileReader,FileWriter)讲解

    FileReader和FileWriter类是用来读取 写入字符文件的便捷类 使用FileReader FileWriter 可以实现文本文件的复制 对于非文本文件 视频文件 音频文件 图片 只能使用字节流 字符输入流 FileReader