FileReader和FileWriter

FileReader字符输入流

按照字符来操作文件

构造方法:

new FileReader(File/String); //参数为文件对象或者文件路径

常用方法:

  1. read();//每次读取单个字符,返回值为该字符,到未见末尾则为一
  2. read(char[] buff);批量读取字符到数组,返回值为读取的字符数,到文件尾返回-1

关于String类

  1. new String(char[] a);//将char[]转换为String
  2. new String(char[], int,int);//将char[]数组的指定位置字符转换为字符串

package com.cn.file;
import org.junit.Test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class MyFileReader {

    @Test
    public void test(){
        String filePath="F:\\y\\file02.txt";
        char[] buf=new char[5];
        int data=0;
        FileReader fileReader=null;
        try {
            fileReader=new FileReader(filePath);
            while ((data=fileReader.read())!=-1) //读取方式一
            {
                System.out.print((char) data);
            }
            System.out.println();
            System.out.println("换行啦!!!!!!!!!");
/*
            while ((data=fileReader.read(buf))!=-1) //读取方式二
            {
                System.out.print(new String(buf,0,data));
            }
            System.out.println("值:"+fileReader.read(buf));
            
 */
            System.out.println("值:"+fileReader.read());
        } catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            if (fileReader!=null){
                try {
                    fileReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


    }
}



FileWriter字符输出流

用于文件内容的输入操作

构造方法:

new FileWriter(File/String);//参数为文件类对象或者文件路径,覆盖模式写入

new FileWriter(File/String,true);//追加模式写入

常用方法:

  1. write(int); //写入单个字符
  2. write(char[]); //写入整个数组
  3. write(char[], int, int ); //写入数组指定位置,第一个int参数为起始位置,第二个是从起始位置后的写入长度
  4. write(String);//写入整个字符串
  5. write(String,int,int); //写入字符串指定位置的内容到文件中

注:

FileWriter使用写入后,必须使用关闭(close())或者刷新(flush())方法,否则写入不到指定文件


package com.cn.file;

import org.junit.Test;

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

public class MyFileWriter {

    @Test
    public void test(){
        String filePath="F:\\y\\file03.txt";
        FileWriter fileWriter=null;
        try {
            fileWriter=new FileWriter(filePath,true);
            //加true为追加写入,不加为覆盖写入

            fileWriter.write('A');//写入单个字符
            fileWriter.write("你好");//写入整个字符串
            fileWriter.write("你好世界".toCharArray(),0,2);//写入指定位置的字符数组
            fileWriter.write("你好世界",0,2);//写入指定位置的字符串
            fileWriter.flush();//刷新缓存,将上面的内容写入


        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (fileWriter!=null){
                try {
                    fileWriter.close();//也会调用flush()
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


    }
}