文件操作(4)字符流FileReader、FileWriter的用法

1、 字符流

  • java将流按照读写单位划分为字节流与字符流.
  • java.io.InputStream和OutputStream是所有字节流的超类
  • 而java.io.Reader和Writer则是所有字符流的超类,它们和字节流的超类是平级关系.
  • Reader和Writer是两个抽象类,里面规定了所有字符流都必须具备的读写字符的相关方法.
  • 字符流最小读写单位为字符(char),但是底层实际还是读写字节,只是字符与字节的转换工作由字符流完成.

2、FileReader的用法

构造FileReader流对象,将数据内容写入文件,关闭文件流对象
常用方法:跟字节流类似用法
int read()
读取单个字符。读取的字符,如果已到达流的末尾,则返回 -1
int read(char[] c)
读取一个字符数组,读取的字符,如果已到达流的末尾,则返回 -1 ,c - 目标缓冲区
int read(char[] c,int off,int len)
void close( )

FileReader类是InputStreamReader的子类
FileReader(File file)
FileReader(String name)
FileInputStream和FileReader进行文件的读写并没有什么区别,只是操作单元不同(一个是byte,一个是char)

3、示例

import java.io.FileReader;

public class TestFileReader {

    public static void main(String[] args) {
        // 字符流输入 :FileReader用法
        
        try (
                //1、创建字符输入流对象
                FileReader frd = new FileReader("/Users/xiayimiaoyijiuyonggan/Projects/Kh100/fff.txt")
                ){
            //定义可变字符串对象,接收读取内容
            StringBuffer sbd = new StringBuffer();
            
            //定义字符缓冲数组
            char[] chars = new char[10];
            
            //2、循环读取文件
            int hasRead = -1;
            while ((hasRead = frd.read(chars))!=-1) {
                
                //输出读取的字符内容
                String readContent = new String(chars,0,hasRead);
                System.out.println("读取内容:"+readContent);
                
                sbd.append(readContent);
                
            }
            System.out.println("接收的内容:"+sbd);
            
        } catch (Exception e) {
            // TODO: handle exception
        }
        System.out.println("字符输入流成功!!");
    }
}
  • FileReader的缺点

此方法会将文本里带有的格式消除,比如换行,体现不了

4、FileWriter示例

import java.io.FileWriter;

public class TestFileWriter {

    public static void main(String[] args) {
        //字符输出流:FileWriter
        
        try (
                //创建字符输出流对象
                FileWriter fwt = new FileWriter("/Users/xiayimiaoyijiuyonggan/Projects/Kh100/iii.txt")
                
                ){
            
                //
                String writeContent = "Kh100班,正在学习";
                
                //写文件
                fwt.write(writeContent);
                
                //缓冲区
                fwt.flush();
            
        } catch (Exception e) {
            // TODO: handle exception
        }

        System.out.println("成功");
    }

}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容