javaAPI 高级特性 IO流 使用字符输入输出流将源文件中的内容替换

首先创建字符输入流对象 和 字符输入流缓冲区

  fr = new FileReader("D:\\File\\hello.txt");
  br = new BufferedReader(fr);

创建一个字符串保存原文件中的内容并且创建一个字符串缓冲流来保存替换后的内容

String str;
StringBuffer sb = new StringBuffer();

将替换前文件中的内容读出来

  while ((str = br.readLine()) != null) {
               sb.append(str);
            }
            System.out.println(sb);

代码效果为:

*************************************

接下来写替换后的内容

创建字符输出流对象和输出流缓冲区

 fw = new FileWriter("D:\\File\\hello1.txt",true);
 bw = new BufferedWriter(fw);

使用字符串的toString方法输出该字符串所有内容并用replace替换文件中的部分内容

String replace = sb.toString().replace("{name}", "{小花}")
                    .replace("{type}", "{哈士奇}")
                    .replace("{MasterName}", "{OldStar}");

在java虚拟机中输入替换后的内容 并且使用 字符输出缓冲流将替换后的文件内容保存到该文件中

使用newLine()换行符换行输出 并使用flush()强制刷新

System.out.println("替换后==>\n"+replace);
 bw.write(replace);
 bw.newLine();
 bw.flush();

代码效果为

 

关流

 try {
                if (fr != null) {
                    fr.close();
                }
                if (br != null) {
                    br.close();
                }
                if (fw != null) {
                    fw.close();
                }
                if (bw != null) {
                    bw.close();
                }

*********************

所有代码

package com.chapter03.test.Test4;

import com.chapter03.demo.demo06.BufferedReaderTest;

import java.io.*;

/**
 * @program: java-API
 * @description:
 * @author: ZZH
 * @create: 2022-04-02 08:32
 **/
class Dog {
    String name;
    String type;
    String MasterName;

    public Dog(String name, String type, String masterName) {
        this.name = name;
        this.type = type;
        MasterName = masterName;
    }

    public Dog() {

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getMasterName() {
        return MasterName;
    }

    public void setMasterName(String masterName) {
        MasterName = masterName;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", type='" + type + '\'' +
                ", MasterName='" + MasterName + '\'' +
                '}';
    }
}

public class Test4 {
    public static void main(String[] args) {
        BufferedWriter bw = null;
        FileWriter fw = null;
        FileReader fr = null;
        BufferedReader br = null;
        try {
            fr = new FileReader("D:\\File\\hello.txt");
            br = new BufferedReader(fr);
            String str;
            System.out.println("替换前");
            StringBuffer sb = new StringBuffer();
            while ((str = br.readLine()) != null) {
               sb.append(str);
            }
            System.out.println(sb);
            fw = new FileWriter("D:\\File\\hello1.txt",true);
            bw = new BufferedWriter(fw);
            String replace = sb.toString().replace("{name}", "{小花}")
                    .replace("{type}", "{哈士奇}")
                    .replace("{MasterName}", "{OldStar}");
            System.out.println("替换后==>\n"+replace);
            bw.write(replace);
            bw.newLine();
            bw.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if (fr != null) {
                    fr.close();
                }
                if (br != null) {
                    br.close();
                }
                if (fw != null) {
                    fw.close();
                }
                if (bw != null) {
                    bw.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

你可能感兴趣的:(java,开发语言,后端,架构)