Java基础知识强化之IO流笔记37:FileReader/FileWriter(转换流的子类)复制文本文件案例
1. 转换流的简化写法:
由于我们常见的操作都是使用本地默认编码,所以,不用指定编码。
而转换流的名称有点长,所以,Java就提供了其子类供我们使用:FileReader / FileWriter
OutputStreamWriter = FileOutputStream + 编码表(GBK)
FileWriter = FileOutputStream + 编码表(GBK)
InputStreamReader = FileInputStream + 编码表(GBK)
FileReader = FileInputStream + 编码表(GBK)
2. FileReader / FileWriter两者的构造方法:
(1)FileReader的构造方法
构造方法摘要 | |
---|---|
FileReader(File file) 在给定从中读取数据的 File 的情况下创建一个新 FileReader。 |
|
FileReader(FileDescriptor fd) 在给定从中读取数据的 FileDescriptor 的情况下创建一个新 FileReader。 |
|
FileReader(String fileName) 在给定从中读取数据的文件名的情况下创建一个新 FileReader。 |
(2)FileWriter的构造方法
构造方法摘要 | |
---|---|
FileWriter(File file) 根据给定的 File 对象构造一个 FileWriter 对象。 |
|
FileWriter(File file, boolean append) 根据给定的 File 对象构造一个 FileWriter 对象。 |
|
FileWriter(FileDescriptor fd) 构造与某个文件描述符相关联的 FileWriter 对象。 |
|
FileWriter(String fileName) 根据给定的文件名构造一个 FileWriter 对象。 |
|
FileWriter(String fileName, boolean append) 根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。 |
3. 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中
数据源:
a.txt -- 读取数据 -- 字符转换流 -- InputStreamReader -- FileReader
目的地:
b.txt -- 写出数据 -- 字符转换流 -- OutputStreamWriter -- FileWriter
4. 代码示例:
- package cn.itcast_04;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- /*
- * 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中
- *
- * 数据源:
- * a.txt -- 读取数据 -- 字符转换流 -- InputStreamReader -- FileReader
- * 目的地:
- * b.txt -- 写出数据 -- 字符转换流 -- OutputStreamWriter -- FileWriter
- */
- public class CopyFileDemo2 {
- public static void main(String[] args) throws IOException {
- // 封装数据源
- FileReader fr = new FileReader("a.txt");
- // 封装目的地
- FileWriter fw = new FileWriter("b.txt");
- // 一次一个字符
- // int ch = 0;
- // while ((ch = fr.read()) != -1) {
- // fw.write(ch);
- // }
- // 一次一个字符数组
- char[] chs = new char[1024];
- int len = 0;
- while ((len = fr.read(chs)) != -1) {
- fw.write(chs, 0, len);
- fw.flush();
- }
- // 释放资源
- fw.close();
- fr.close();
- }
- }
运行结果,如下:
Java基础知识强化之IO流笔记37:FileReader/FileWriter(转换流的子类)复制文本文件案例的更多相关文章
- Java基础知识强化之网络编程笔记12:TCP之TCP协议上传文本文件并给出反馈
1. 客户端: package cn.itcast_12; import java.io.BufferedReader; import java.io.BufferedWriter; import j ...
- Java基础知识强化之网络编程笔记11:TCP之TCP协议上传文本文件
1. TCP协议上传文本文件(客户端上传数据到服务器端) (1)客户端(上传数据到服务端) package cn.itcast_11; import java.io.BufferedReader; i ...
- Java基础知识强化之网络编程笔记07:TCP之服务器给客户端一个反馈案例
1. 首先我们搭建服务器端的代码,如下: package cn.itcast_07; import java.io.IOException; import java.io.InputStream; i ...
- Java基础知识强化之集合框架笔记37:用户登录注册案例
1. 登录注册案例分析图解: 2. 用户登录案例 详细分析 和 分包实现: (1)用户登录案例详细分析(面向对象思想) 按照如下的操作,可以让我们更符合面向对象思想: • 有哪些类呢? ...
- Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介
1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...
- Java基础知识强化之IO流笔记39:字符流缓冲流之复制文本文件案例01
1. 字符流缓冲流之复制文本文件案例 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中 数据源: a.txt -- 读取数据 -- 字符转换流 -- InputStreamRe ...
- Java基础知识强化之IO流笔记22:FileInputStream / FileOutputStream 复制文本文件案例1
1. 使用字节流FileInputStream / FileOutputStream 复制文本文件案例: 分析: (1)数据源:从哪里来 a.txt -- 读取数据 -- FileInpu ...
- Java基础知识强化之IO流笔记65:序列化流 和 反序列化流
1. 什么是 序列化 和 反序列化 ? 序列化 (Serialization):将对象的状态信息转换为可以存储或传输的形式的过程.比如转化为二进制.xml.json等的过程. 在序列化期间,对 ...
- Java基础知识强化之IO流笔记63:随机访问流RandomAccessFile
1. 随机访问流RandomAccessFile RandomAccessFile类不属于流,是Object类的子类.但它融合了InputStream和OutputStream的功能.支持对随机访问文 ...
- Java基础知识强化之IO流笔记60:打印流 之 改进复制文本文件的案例
1. 使用打印流改进复制文本文件的案例 2. 代码示例: package cn.itcast_03; import java.io.BufferedReader; import java.io.Buf ...
随机推荐
- 如何查看跟踪查看LINUX内核中的源码
我的博客:www.while0.com 最近看LINUX书籍时,根据书中代码找相应的函数或者结构定义相当吃力,根据网上资料按以下方法查找速度较快. 1.安装ctags 在源代码目录下运行 ctags ...
- Automator一键生成所需的iOS 图片icon
iOS到8了, 终于受不了它的各种尺寸的icon了. 写一个Finder服务来一键生成吧. 拖放几次再重复, 无技术含量, 但很有用. // 存放目录 ~/资源库/Services/
- Sending data to USB printer in C#?
using System; using System.Drawing; using System.Drawing.Printing; using System.IO; using System.Run ...
- HDU 2647
思路:拓扑排序 #include<stdio.h> #include<string.h> typedef struct { int to; int next; }EdgeNod ...
- 使用 Windows PowerShell 管理Windows Azure映像
你可以使用 Azure PowerShell 模块中的 cmdlet 管理可供你的 Azure 订阅使用的映像.这包括 Azure 提供的映像以及你上载的映像.对于某些映像任务,你还可以使用 Azur ...
- MTRR内存类型范围寄存器
1.MTRR的概念 内存类型范围寄存器(MTRRs,翻译过来真别扭,后面都以MTRR直接来说了)提供了一种机制,这种机制其实就是确定在系统内存中物理一段内存的类型.这个类型其实是正对CPU来说的,见图 ...
- php学习小记1
1.回调函数 c语言中的回调函数:通过函数指针调用的函数.将函数a的指针(地址)作为参数传递给另一个函数b,当函数a的指针被b用来调用a时,这就是回调函数,在特定的事件或条件发生时,由另外一方调用,用 ...
- SpringTest 使用说明 -构建无污染纯绿色事务测试框架 (记录用)
@ContextConfiguration({"classpath:applicationContext.xml","classpath:spring/buyer/app ...
- java dubug调试
摘要:调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷.对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程序,更需要学会如何调试程序.本文介绍了Java程序员必知的10个调试 ...
- CodeForces 352C. Jeff and Rounding(贪心)
C. Jeff and Rounding time limit per test: 1 second memory limit per test: 256 megabytes input: stan ...