解析java中的文件字符输出流

解析java中的文件字符输出流

1 含义

字符输入流的后缀为Writer,文件字符输入流的全名为FileWriter

2 作用

以字符的形式对内存中存储的数据写入到磁盘上的某个文件上(数据是从内存流向磁盘中的文件)

3 如何用

3.1 构造方法

3.1.1 FileWriter(文件路径)

​ 默认传一个文件路径过去,这个文件可以没有,但是目录一定要存在,没有就会新建一个文件,然后把通过write方法把内存的数据的文件写入到该文件中

若文件存在,那默认是先把之前文件里面的内容清空,然后再添加上新的内容

3.1.2 FileWriter文件路径,是否追加)

同样的,需要去写入的文件的目录一定要存在,不然会出现FileNotFoundException异常
在这里插入图片描述

若你是否追加那里填入一个true,那么之前文件里面的内容不会清空,只是把新的内容追加到文件的末尾而已,若填入的是false,那就是先清空,然后再去写入新的内容

3.1 使用方法

3.1 写入一个字节
3.1.1 核心思路
a 声明一个文件字节输出流FileWriter对象,并赋值为null
b 实例化FileWriter对象并通过try…catch去处理异常
c 通过实例对象.write(字节)去写入一个字节,这里既可以传入数字,也可以传入字符,使用该方法需要try…catch捕获异常
d ascil的数字转换成对应的字符,然后写入到指定的文件
e. 写完后需要对象名.flush()方法刷新状态
f 最后在finally语句中对实例对象进行非空判断,若不为null则需要通过对象名.close()方法去关闭这个文件字符输出流(不关闭会造成资源的浪费),在关闭的时候也要去try…catch去捕获异常
3.1.2 示例代码
temp.txt文件内容(运行之前)

在这里插入图片描述

FileWriter类
package Work4;

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

public class FileWriterTest {
    public static void main(String[] args) {
        FileWriter fw=null;
        try {
            fw=new FileWriter("src/Work06/temp.txt");
            //只有一个参数代表默认是清空后再写入新的内容,文件的目录一定要存在才能正常写入
            fw.write('a');
            fw.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fw != null) {
                try {
                    fw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

3.1.3 示例代码运行截图

在这里插入图片描述

3.2 写入一个字符串
3.2.1 核心思路
a 声明一个FileWriter对象并赋值为null;
b 实例化FileWriter对象,并需要通过try…catch去捕获异常
c 通过字符串的tocharArray方法将字符串转换成char类型数组(对应的ascill值)
d 使用对象名.write(chars),把chars数组写入到指定的文件中,这里使用这个方法是需要try…catch去处理异常
e 使用对象名.flush刷新一下状态
f 判断对象是否为null,若为null,则对象名.close去关闭文件字符输出流;使用close方法我们还是需要去捕获异常

注意:尽管在调用close方法的时候还是会调用了flush方法,但是还是建议现在try里面进行flush方法的调用然后再在finally代码块里面进行close方法的的调用

3.2.2 示例代码
temp.txt文件(运行之前)

在这里插入图片描述

FileWriter类
package Work4;

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

public class FileWriterTest {
    public static void main(String[] args) {
        FileWriter fw=null;
        try {
            fw=new FileWriter("src/Work06/temp.txt");
            String content="好好学习,天天向上!!!!!";
            //只有一个参数代表默认是清空后再写入新的内容,文件的目录一定要存在才能正常写入
            fw.write(content.toCharArray());
            fw.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fw != null) {
                try {
                    fw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

3.2.3 示例代码运行截图

在这里插入图片描述

3.3 写入指定的字符串(开始位置给出,长度给出)
3.3.1 核心思路
a 声明一个文件字节输出流对象FileWriter,并给其赋值为null
b 实例化文件字符输出流对象,需要try…catch捕获异常
c.通过字符串的tocharArray转换成byte数组
d 输出流对象.write(chars,offest,length),offest是你想从字符串的哪里开始写入,length是从offest开始写入的字节的个数,调用write方法需要try…catch异常
e 输出流对象.flush刷新一下
f.在finally语句中里面判断文件字符输出流对象,若不为空,就需要对象名.close()去进行关闭文件字符输出流这个操作,用close方法还需要去try…catch捕获异常
3.3.2 示例代码
temp.txt

在这里插入图片描述

FileWriterTest类
package Work4;

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

public class FileWriterTest {
    public static void main(String[] args) {
        FileWriter fw=null;
        try {
            fw=new FileWriter("src/Work06/temp.txt");
            String content="好好学习,天天向上!!!!!";
            //只有一个参数代表默认是清空后再写入新的内容,文件的目录一定要存在才能正常写入
            fw.write(content.toCharArray(),0,4);
            fw.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fw != null) {
                try {
                    fw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

3.3.3 示例代码运行截图

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SSS4362

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值