IO流之文件字符输出流【FileWriter】

2020-08-22  本文已影响0人  程序员小杰

上一篇:IO流之文件字符输入流【FileReader】https://www.jianshu.com/p/d35a45e96eef

一、字符输出流【Writer】

java.io.Writer 抽象类是表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地。它定义了字符输出流的基本共性功能方法。

二、FileWriter【文件字符输出流】

java.io.FileWriter extends OutputStreamWriter extends Writer
FileWriter:把内存数据写入到文件中。

2.1 构造方法

当你创建一个流对象时,必须传入一个文件路径,类似于FileOutputStream。 构造举例,代码如下:

public static void main(String[] args) throws IOException { 
        // 使用File对象创建流对象 
        File file = new File("a.txt"); 
        FileWriter fw = new FileWriter(file); 
        // 使用文件名称创建流对象 
        FileWriter fw2 = new FileWriter("b.txt"); 
    }

构造方法的作用:
1、会创建一个FileWriter对象
2、会根据构造方法中传递的文件/文件路径,创建文件
3、会把FileWriter对象指向创建好的文件

三、写出数据

写出字符: write(int b) 方法,每次可以写出一个字符数据,代码使用演示:

public static void main(String[] args) throws IOException { 
        
    // 使用文件名称创建流对象
        FileWriter fw = new FileWriter("IO流//d.txt");
        //使用FileWriter中的方法write,把数据写入到内存缓冲区(字符转换为字节的过程)
        fw.write(98);
        fw.write('b');
        fw.write((30000));
        //使用FileWriter中的方法flush,把内存缓冲区的数据,刷新到文件中
        fw.flush();
        //释放资源(会先把内存缓冲区的数据,刷新到文件中)
        fw.close();
    }

结果:bb田
关闭和刷新

因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中。但是关闭的流对象,是无法继续写出数据 的。如果我们既想写出数据,又想继续使用流,就需要 flush 方法了。

写出字符数组 : write(char[] cbuf) 和 write(char[] cbuf, int off, int len) ,每次可以写出字符数组中的数据,用法类似FileOutputStream,代码使用演示:

 public static void main(String[] args) throws IOException {
     FileWriter fr = new FileWriter("IO流//d.txt");
        // 字符串转换为字节数组
        char[] b = "你好棒棒哦".toCharArray();
        // 写出字符数组
        fr.write(b);  // 你好棒棒哦
        // 写出从索引2开始,2个字节。索引2是'棒',两个字节,也就是'棒棒'
        fr.write(b,2,2);  //你好棒棒哦棒棒
        fr.close();
    }
结果:你好棒棒哦棒棒

写出字符串: write(String str) 和 write(String str, int off, int len) ,每次可以写出字符串中的数据,更为方便,代码使用演示

 public static void main(String[] args) throws IOException {
        FileWriter fr = new FileWriter("IO流//d.txt");
        // 字符串
        String msg = "乘风破浪的姐姐";
        // 写出字符数组
        fr.write(msg); //乘风破浪的姐姐
        // 写出从索引2开始。索引2是'破',两个字节,也就是'破浪'。
        fr.write(msg,2,2); // 乘风破浪的姐姐破浪
        fr.close();
    }
结果:乘风破浪的姐姐破浪

续写和换行:操作类似于FileOutputStream。

参数:

fileName、file:写入数据的目的地
append:续写开关 true:不会创建新文件覆盖源文件 false:创建新文件覆盖源文件

public static void main(String[] args) throws IOException {
        FileWriter fr = new FileWriter("IO流//d.txt",true);
        for (int i = 0; i < 4; i++) {
            fr.write("追加写");
            fr.write("\r\n");
        }
        fr.flush();
        fr.close();
    }

输出结果:
你好棒棒哦棒棒乘风破浪的姐姐破浪追加写
追加写
追加写
追加写

换行符号:
window:\r\n
linux:\n
mac:\r
下一篇:IO流之缓冲流 https://www.jianshu.com/p/f80daa6fe45f

上一篇下一篇

猜你喜欢

热点阅读