FileReader与FileWriter

2023-11-07

  FileReader与FileWriter分别继承Reader和Writer,以字符为单位广泛用于文件操作的节点流。FileReader类用于从文本文件读数据,每次读入一个字符或者一个字符数组;FileWriter类用于从文本文件写数据,每次写入一个字符,一个字符数组或者一个字符串。

  FileReader类常用的构造方法:

--- FileReader(File file),在给定从中读取数据的File的情况下创建一个新的FileReader。

--- FileReader(String fileName),在给定从中读取数据的文件名的情况下创建一个新的FileReader。

--- FileReader(FileDescriptor fd),在给定从中读取数据的FileDescriptor 的情况下创建一个新的FileReader。

FileWriter类常用的构造方法:

--- FileWriter(File file),根据给定的file对象构造一个FileWriter对象。注意写入文件时目录下的同名文件会被覆盖。

--- FileWriter(File file,boolean append),根据给定的file对象构造一个FileWriter对象。若append为true则写入文件时目录下的同名文件不会被覆盖,在已有文件的末尾添加内容。

--- FileWriter(FileDescriptor fd),构造与某个文件描述符相关联的FileWriter对象。

--- FileWriter(String fileName),根据给定的文件名构造一个FileWriter对象。

--- FileWriter(String fileName,boolean append),根据给定的f文件名构造一个FileWriter对象。若append为true则写入文件时目录下的同名文件不会被覆盖,在已有文件的末尾添加内容。

注意文件名和文件对象的区别以及是否加true的区别!

代码示例:

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

public class FileWriterTest {
    public static void main(String[] args) {
        FileReader fr=null;
        FileWriter fw=null;
        try{
            File srcFile=new File("D:\\idea\\loafonajob\\untitled\\src\\hello.txt");//创建文件对象
            File destFile=new File("D:\\idea\\loafonajob\\untitled\\src\\hello1.txt");//创建文件对象
            fr=new FileReader(srcFile);//用文件对象创建FileReader
            fw=new FileWriter(destFile,true);//用文件对象创建FileWriter,加上指示true
            char[] cbuf=new char[5];
            int len;
            while((len=fr.read(cbuf))!=-1){
                fw.write(cbuf,0,len);
                System.out.println(cbuf);
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                if(fw!=null)
                    fw.close();
            }catch (IOException e){
                e.printStackTrace();
            }finally {
                try{
                    if(fr!=null)
                        fr.close();
                }catch (IOException e){
                    e.printStackTrace();
                }
            }
        }
    }
}

注意FileReader没有指示true,FileWriter有指示true,所以写入文件时不会覆盖,即每运行一次hello1.txt文件都会拷贝一次hello.txt。

注意一定要写清楚hello.txt文件和hello1.txt文件的路径。

hello.txt有以下内容:hello

hello1.txt初始为空,所以以上代码每运行一次hello1.txt文件内容都会被加上hello。

如果没有true,则每次代码运行hello1.txt都会被覆盖这样hello1.txt的内容只有hello不会随运行次数增加而增加。

用文件名创建FileReader和FileWriter,代码示例:

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

public class FileWriterTest {
    public static void main(String[] args) {
        FileReader fr=null;
        FileWriter fw=null;
        try{
            fr=new FileReader("D:\\idea\\loafonajob\\untitled\\src\\hello.txt");
            fw=new FileWriter("D:\\idea\\loafonajob\\untitled\\src\\hello1.txt",true);
            char[] cbuf=new char[5];
            int len;
            while((len=fr.read(cbuf))!=-1){
                fw.write(cbuf,0,len);
                System.out.println(cbuf);
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                if(fw!=null)
                    fw.close();
            }catch (IOException e){
                e.printStackTrace();
            }finally {
                try{
                    if(fr!=null)
                        fr.close();
                }catch (IOException e){
                    e.printStackTrace();
                }
            }
        }
    }
}

可以复制我的代码到idea去测试一下,注意文件路径要用自己电脑的文件路径,推荐文件格式为txt文件。idea可以创建文件,但要加上.txt后缀名,读取文件不要为空,写入文件可以为空。

总结:

java中的操作流的基本过程为以下四步:

1.声明流对象的引用变量,赋值为null。

2.在try中完成对输入流和输出流的操作。

3.在catch中对可能抛出的异常进行捕获处理。

4.在finally中关闭输入流和输出流。

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

FileReader与FileWriter 的相关文章

随机推荐

  • ArcGIS 10.1 Engine Developer Kit 和 ArcGIS 10.1 Engine 快速入门指南

    http resources arcgis com zh cn help quick start guides 10 1 index html 01q100000004000000 ArcGIS 10 1 Engine Developer
  • 开源库网格算法比较

    对于Mesh 我们通常分为结构化网格和非结构化网格 理解很简单 除了四边形和六面体是结构化网格 其它都是非结构化网格 最近在学习网格算法 本人关心的主要是3D网格相关的算法 总结了一下主要包括 网格生成 网格平滑 网格参数化 网格重新剖分
  • 3/1 线性存储之链表应用和练习题

    链表的应用及练习题 1 合并两一元多次项式 2 灵活使用链表的查找任意节点数据 本文将持续更新 1 合并两一元多次项式 举例说明 A x 5x2 x3 6x4 7x5 B x 7x 2x2 3x3 2x4 6x5 可以形成如图所示的两个链表
  • 运营之光2.0 我的互联网运营方法论与自白

    唯有爱与用户不可辜负 与每一位互联网人共勉 运营是什么 产品负责界定和提供长期用户价值 运营负责创造短期用户价值 协助产品完善长期价值 若干运营模块 内容运营 提升内容相关的数据 如内容数量 内容浏览量 内容互动数 内容传播数 用户运营 提
  • 最新版Android SDK Manager.exe 无法打开、配置代理等

    背景 升级 Android SDK tools 到版本26后就打不开Android SDK SDK Manager exe工具了 甚至会找不到Avd Manager exe和Sdk Manager exe这两个文件 这是因为谷歌把他们移除了
  • Excel如何将多分隔符的杂乱信息数据拆分

    1 如下图 是某老师要处理多分隔符号的杂乱数据 现在想要将数据中的姓名 性别 年龄分别拆分放在三个单元格中 2 选中B列所有要处理的数据区域 3 点击下图选项 Excel插件 具体安装方法百度即可 本文不作过多叙述 4 点击 更多 5 选择
  • vue项目中,main.js,App.vue,index.html如何调用

    1 main js是我们的入口文件 主要作用是初始化vue实例 并引入所需要的插件 2 App vue是我们的主组件 所有页面都是在App vue下进行切换的 其实你也可以理解为所有的路由也是App vue的子组件 所以我将router标示
  • cgo+gSoap+onvif学习总结:9、go和c进行socket通信进行onvif协议处理

    cgo gSoap onvif学习总结 9 go和c进行socket通信进行onvif协议处理 文章目录 cgo gSoap onvif学习总结 9 go和c进行socket通信进行onvif协议处理 1 前言 2 思路 3 c代码 3 1
  • 一步一步实现现代前端单元测试

    2年前写过一篇文章用Karma和QUnit做前端自动单元测试 只是大概讲解了 karma 如何使用 针对的测试情况是传统的页面模式 本文中题目中 现代 两字表明了这篇文章对比之前的最大不同 最近几年随着SPA Single Page App
  • 在web项目中如何导入jar包

    在Eclipse里 右键点击工程 gt build Path gt Configure Build Path gt Libraries gt Add JARs或者Add External JARs 如果是war包 把jar包扔到WEB IN
  • angular api请求简单封装get(),post()

    api请求简单封装 api 简单封装 scope api get function params callback http url params api url default url method GET params params s
  • 错误:No rule to make target `../pubbusiness/localshareapi/localsharerecv.cpp,need by ‘temp/localshare

    出现这个错误的原因 排查方向往出现错误的那个文件 可能有比如引用此文件的路径不对 工程更改路径或者更改了其中的文件夹名称等 解决方案 1 查看 pro或 pri文件里路径的 h或 cpp的加载路径有没有错 我的是因为这个原因 2 删除之前编
  • Jauns-gateway 报错【No package ‘libssl‘ found No package ‘libcrypto‘ found】

    No package libssl found No package libcrypto found 在Mac下配置janus gateway服务器的时候遇到了找不到libssl和libcrypto错误 详情如下 configure che
  • Java接口:实现多重继承,促进代码复用与扩展的强大工具

    目录 1 接口的定义与成员 2 接口的实现 3 接口的多继承与多态 3 1实现多重继承 3 2促进代码复用与扩展 4 Java新特性 默认方法 静态方法与私有方法 5 结语 1 接口的定义与成员 Java中使用interface关键字定义接
  • 即时通讯IM技术领域基础篇

    转自 https juejin im post 5a694f216fb9a01cb74e8f74 即时通讯IM技术领域基础篇 即时通讯IM技术领域提高篇 议题 准备工作 协议选型 网络传输协议选择 和 数据通信协议选择 xxx项目架构 架构
  • 重学java—基础知识点

    数据类型 1 基本数据类型 boolean 1 byte 8 char 16 short 16 int 32 float 32 long 64 double 64 每个类型都有它对应的包装类 自动装箱和拆箱操作 2 缓存池 valueOf
  • Rem与Px的转换

    rem是CSS3中新增加的一个单位值 他和em单位一样 都是一个相对单位 不同的是em是相对于元素的父元素的font size进行计算 rem是相对于根元素html的font size进行计算 这样一来rem就绕开了复杂的层级关系 实现了类
  • xshell7和xftp7下载和安装

    xshell7和xftp7下载和安装 环境 win10 链接 https pan baidu com s 1i6Zl2eW8tJJ83YAc02oQjg 提取码 6666 复制这段内容后打开百度网盘手机App 操作更方便哦 2022年06月
  • pandas 读/写取多个sheet 的excel

    经常使用pandas 读取多个sheet 的文件 读取方式 先获得sheet 名字 再指定sheet name 参数进行读取 写多个sheet 到同一个文件 import pandas as pd infile data test xlsx
  • FileReader与FileWriter

    FileReader与FileWriter分别继承Reader和Writer 以字符为单位广泛用于文件操作的节点流 FileReader类用于从文本文件读数据 每次读入一个字符或者一个字符数组 FileWriter类用于从文本文件写数据 每