Java中字符流 FileWriter和FileReader以及字符缓冲流的相关操作

字符流

FileWriter

1. FileWriter类的构造方法

  • FileWriter(File file)
    根据给定的 File 对象构造一个 FileWriter 对象
  • FileWriter(File file, boolean append)
    根据给定的 File 对象构造一个 FileWriter 对象
  • FileWriter(String fileName)
    根据给定的文件名构造一个 FileWriter 对象
  • FileWriter(String fileName, boolean append)
    根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象

2. 成员方法

  • void write(int c)
    写一个字符
  • void write(char[] cbuf)
    写入一个字符数组
  • void write(char[] cbuf, int off, int len)
    写入字符数组的一部分
  • void write(String str)
    写一个字符串
  • void write(String str, int off, int len)
    写一个字符串的一部分

示例代码

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


public class FileWriterDemo1 {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("io-practice\\FileWriterDemo1.txt");

        //void   write(int c)写一个字符
        fw.write(97);
        fw.write(98);
        fw.write(99);
        fw.write(100);
        //在字符输出流中换行
        fw.write("\r\n");

        //void   write(char[] cbuf)写入一个字符数组
        //注意:此处虽然是字符数组
        //但是字符型数据与整型数据之间可以通用
        //整型数据在这里对应字符集中相应的字符
        //允许对整形变量赋予字符值,也允许对字符变量赋整形值
        char[] charArray1 = {97,98,99,100};
        fw.write(charArray1);
        fw.write("\r\n");
        char[] charArray2 = {'a','b','c','d'};
        fw.write(charArray2);
        fw.write("\r\n");

        //void write(char[] cbuf, int off, int len)写入字符数组的一部分
        fw.write(charArray2,0,2);
        fw.write("\r\n");

        //void write(String str)写一个字符串
        fw.write("NetEase");
        fw.write("\r\n");

        //void write(String str, int off, int len)写一个字符串的一部分
        fw.write("NetEase",0,"NetEase".length());
        fw.write("\r\n");


        //关闭字符输出流,释放资源
        fw.close();

    }
}

FileReader

1. FileReader类的构造方法

  • FileReader(File file)
    传入一个File对象,创建一个新 FileReader
  • FileReader(String fileName)
    传入一个目录的路径,创建一个新 FileReader

2. 成员方法

  • int read()
    一次读一个字符数据
  • int read(char[] cbuf)
    一次读一个字符数组数据

示例代码

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

public class FileReaderDemo1 {
    public static void main(String[] args) throws IOException {
        //int read()一次读一个字符数据
        FileReader fr = new FileReader("io-practice\\four.txt");

//        int b;
//        while((b = fr.read())!= -1){
//            System.out.print((char)b);
//        }

        //int read(char[] cbuf)一次读一个字符数组数据
        //表示读取字符时一次性读取1024个字符,并存入字符数组中
        char[] charArray = new char[1024];
        //len表示当前读取到的字符数目
        int len;
        while((len = fr.read(charArray)) != -1){
            //该String的构造方法是将字符数组从0索引开始,长度为len的字符转化为字符串对象
            System.out.print(new String(charArray,0,len));
        }

        fr.close();
    }
}

字符缓冲流

BufferedWriter

  • BufferedWriter类
    提升字符输出流的写入效率
  • 构造方法
    BufferedWriter(Writer out)
    创建字符缓冲输出流对象

示例代码

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedWriterDemo1 {
    public static void main(String[] args) throws IOException {
        //io-practice表示的是我要写入的这个文件在当前模块(module)下
        BufferedWriter bw = new BufferedWriter(new FileWriter("io-practice\\BufferedWriter.txt"));

        bw.write(97);
        //换行
        bw.write("\r\n");

        bw.write("lainanizuoa");
        bw.write("\r\n");

        String s = "lainanizuoa";
        bw.write(s,0,5);
        bw.write("\r\n");

        char[] charArray = {97,98,99};
        bw.write(charArray);
        bw.write("\r\n");

        bw.write(charArray,0,2);
        bw.write("\r\n");

        bw.flush();

        bw.close();



    }
}

BufferedReader

  • BufferedReader类
    提升字符输入流的读取效率
  • 构造方法
    BufferedReader(Reader in)
    创建字符缓冲输入流对象

示例代码

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class BufferedReaderDemo1 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("io-practice\\BufferedWriter.txt"));

        char[] charArray = new char[1024];
        int len;
        while((len = br.read(charArray)) != -1){
            System.out.println(new String(charArray,0,len));
        }
        br.close();
    }
}

字符缓冲流的特有方法

  • BufferedWriter:

void newLine()
写一行行分隔符,行分隔符字符串由系统属性定义

  • BufferedReader:

String readLine()
读一行文字。 结果包含行的内容的字符串,
不包括任何行终止字符如果流的结尾已经到达,则为null

示例代码

import java.io.*;

public class BufferedWriterAndReaderDemo1 {
    public static void main(String[] args) throws IOException {
        //使用BufferedWriter类的newLine()方法来进行字符输出流中的换行操作
        BufferedWriter bw = new BufferedWriter(new FileWriter("io-practice\\five.txt"));

        for (int i = 0; i < 5; i++) {
            bw.write("莱纳你坐啊!");
            //换行
            bw.newLine();
            bw.flush();
        }

        bw.close();


        //使用BufferedReader类的方法readLine()读取一行的字符
        //当读取到文件的最后一行字符时,再读下一行时读取到的是null
        BufferedReader br = new BufferedReader(new FileReader("io-practice\\five.txt"));

        String line;
        while((line = br.readLine()) != null){
            System.out.println(line);
        }

        br.close();
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值