首页 > 编程语言 >【Java】FileReader和FileWrite基本使用

【Java】FileReader和FileWrite基本使用

时间:2023-04-09 13:32:32浏览次数:52  
标签:char FileWrite Java String 字符 FileReader 写入 write FileWriter


【Java】FileReader和FileWrite基本使用_FileWrite

【Java】FileReader和FileWrite基本使用_数组_02

文章目录

  • 1. FileReader 和FileWriter是字符流,即按照字符来操作 IO
  • 2. FileWriter 常用方法
  • 3. 案例演示

1. FileReader 和FileWriter是字符流,即按照字符来操作 IO

【Java】FileReader和FileWrite基本使用_FileReader_03

  • FileReader相关方法:
  1. new FileReader(File/String)
  2. read:每次读取单个字符,返回该字符,如果到文件末尾返回-13)read(char[):批量读取多个字符到数组,返回读取到的字符数,如果到文件末尾返回 -1
  • 相关API:
  1. new String(char[]):将char[]转换成String
  2. new String(char[], off, len):将char[]的指定部分转换成String

2. FileWriter 常用方法

  1. new FileWriter(File/String):覆盖模式,相当于流的指针在首端
  2. new FileWriter(File/String, true):追加模式,相当于流的指针在尾端
  3. write(int):写入单个字符
  4. write(char[]):写入指定数组
  5. write(char[], off, len):写入指定数组的指定部分
  6. write (string):写入整个字符串
  7. write(string, off, len):写入字符串的指定部分
  • 相关APl: String类:toCharArray:将String转换成char[]
  • 注意:FileWriter使用后,必须要关闭(close)或刷新(flush),否则写入不到指定的文件

3. 案例演示

  1. 单个字符读取文件:使用 FileReader 从 poetry.txt 读取内容,并显示
/**
 * 单个字符读取文件
 */
@Test
public void readFile01() {
    String filePath = "e:\\poetry.txt";
    FileReader fileReader = null;
    int data = 0;
    // 创建FileReader对象
    try {
        fileReader = new FileReader(filePath);
        // 循环读取 使用read, 单个字符读取
        while ((data = fileReader.read()) != -1) {
            System.out.print((char) data);
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (fileReader != null) {
                fileReader.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

【Java】FileReader和FileWrite基本使用_java_04

  1. 字符数组读取文件
/**
 * 字符数组读取文件
 */
@Test
public void readFile02() {
    String filePath = "e:\\poetry.txt";
    FileReader fileReader = null;
    int readLen = 0;
    char[] buf = new char[8];
    // 创建FileReader对象
    try {
        fileReader = new FileReader(filePath);
        // 循环读取 使用read(buf), 返回的是实际读取到的字符数
        // 如果返回-1, 说明到文件结束
        while ((readLen = fileReader.read(buf)) != -1) {
            System.out.print(new String(buf, 0, readLen));
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (fileReader != null) {
                fileReader.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  1. 使用 FileWriter 将 “兮动人” 写入到 poetry.txt 文件中
String filePath = "e:\\note.txt";
        // 创建FileWriter对象
        FileWriter fileWriter = null;
        char[] chars = {'a', 'b', 'c'};
        try {
        	//默认是覆盖写入,后面加 true 就是增加
            fileWriter = new FileWriter(filePath);
//            3) write(int):写入单个字符
            fileWriter.write('X');
//            4) write(char[]):写入指定数组
            fileWriter.write(chars);
//            5) write(char[],off,len):写入指定数组的指定部分
            fileWriter.write("兮动人".toCharArray(), 0, 2);
//            6) write(string):写入整个字符串
            fileWriter.write("闲来时兮遣思绪,意越为兮雲幻境。");
//            7) write(string,off,len):写入字符串的指定部分
            fileWriter.write("君意风兮何所依,吾忆游兮万物间。", 0, 3);
            
            //在数据量大的情况下,可以使用循环操作
        } catch (IOException e) {
            e.printStackTrace();
        } finally {

            //对应FileWriter , 一定要关闭流,或者flush才能真正的把数据写入到文件
            try {
                //fileWriter.flush();
                //关闭文件流,等价 flush() + 关闭
                fileWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }


标签:char,FileWrite,Java,String,字符,FileReader,写入,write,FileWriter
From: https://blog.51cto.com/xdr630/6178806

相关文章

  • java设计模式之责任链模式
    责任链模式定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。其过程实际上是一个递归调用。特点: 1、有多个对象共同对一个任务进行处理。  2、这些对象使用链式存储结构,形成一......
  • Java for Web学习笔记(二六):JSTL(2)Core Tag(上)
    可以在JSP中替代Java代码的几乎所有功能,包括条件编程,循环,迭代和内容输出。taglib的directive如下:<%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><c:out>AttributesNameRequiredRequest-timeTypeDescriptionvaluetruetruejava.lang.StringExpression......
  • Java for Web学习笔记(三):Servlet(1)Maven
    什么是Maven在http://maven.apache.org/中对Mavent进行介绍,可以:一、发布project信息二、管理Jar包三、提供uniformbuildsystem,使用POM(projectobjectmodel)如果我们使用Eclipse是最新的Mars版本,Maven已经集成进来,所以不需要进行额外的配置,当然,如果我们需要自行安装一个特定位......
  • java-信息安全(二十)国密算法 SM1,SM2,SM3,SM4
    一、概述国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。目前主要使用公开的SM2、SM3、SM4三类算法,分别是非对称算法、哈希算法和对称算法。SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进......
  • java基础-序列化和拷贝
    1.序列化1.1.定义如果我们需要持久化Java对象,或者在⽹络传输Java对象,这些场景都需要⽤到序列化,简单来说序列化就是将数据结构或对象转换成⼆进制字节流的过程,反序列化就是将在序列化过程中所⽣成的⼆进制字节流转换成数据结构或者对象的过程对于Java这种⾯向对象编程语⾔来说,......
  • Java生成PDF几种方式
    ##1、itextPDF直接填充<!--PDF工具类--><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency>......
  • java基础-代理
    1.代理简介2.静态代理3.动态代理3.1.jdk使用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理,JDK创建代理对象效率较高,但是执行效率较低使用流程:实现InvocationHandler接口,重写invoke(),使用Proxy.newProxyInstance()产生代理对象,被代理的对象......
  • 剑指offer05(Java)-替换空格(简单)
    题目:请实现一个函数,把字符串s中的每个空格替换成"%20"。 示例1:输入:s="Wearehappy."输出:"We%20are%20happy." 限制:0<=s的长度<=10000来源:力扣(LeetCode)链接:https://leetcode.cn/problems/ti-huan-kong-ge-lcof著作权归领扣网络所有。商业转载请联系官方授权,......
  • java基础-反射
    1.反射定义反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法,并且对于任意一个对象,都能够调用它的任意一个方法,这种动态获取信息以及动态调用对象方法的功能称为Java反射机制动态语言定义:动态语言是指程序在运行时可以改变其结构,新的函数可以引进,已有的......
  • java基础知识合集-io
    1.IO简介2.IO分类2.1.流分类按照流的流向分,可以分为输入流和输出流按照操作单元划分,可以划分为字节流和字符流按照流的角色划分为节点流和处理流JavalO流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在紧密的联系,JavalO流的40多个类都是从如下4个抽......