其他分享
首页 > 其他分享> > IO流系列---【使用字符流往磁盘文件中写内容-Writer()】

IO流系列---【使用字符流往磁盘文件中写内容-Writer()】

作者:互联网

1.Writer单个字符往文件中写

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

/*
    java.io.Writer类: 字符输出流的顶层抽象父类   用来写出字符的     写出去
    常用方法:
        - public abstract void close() :关闭流释放资源。
        - public abstract void flush()  :刷新缓冲中的内容到目的地。
        - public void write(int c) :写出一个字符。
        - public void write(char[] chs):写出一个字符数组。
        - public void write(char[] chs, int off, int len) :写出一个字符数组的一部分。
            参数:
                char[] chs: 字符数组
                int off: 起始索引
                int len: 写出字符的个数
        - public void write(String str) :写出一个字符串。
        - public void write(String str, int off, int len) :写出一个字符串的一部分。
            参数:
                String str: 字符串
                int off: 起始索引
                int len: 写出字符的个数
    java.io.Writer类: 抽象类    必须使用子类
    常用子类:
    java.io.FileWriter类:文件字符输出流     向文件写出一个/多个字符的   写出去 目标文件
    构造方法:
        public FileWriter(String path)
        public FileWriter(File path)
            参数: String/File类型的文件路径

    步骤:
        1.创建文件字符输出流FileWriter类的对象fw,绑定目标文件
        2.文件字符输出流FileWriter类的对象fw调用write方法,写出字符到文件
        3.文件字符输出流FileWriter类的对象fw调用close方法,关闭流,释放资源


 */
public class Demo03Writer {
    public static void main(String[] args) throws IOException {
        //1.创建文件字符输出流FileWriter类的对象fw,绑定目标文件
        FileWriter fw = new FileWriter("day11\\02_代码\\day11\\fw1.txt");

        //2.文件字符输出流FileWriter类的对象fw调用write方法,写出字符到文件

        fw.write('a');
        fw.write(97);
        fw.write('中');
        fw.write('国');

        //3.文件字符输出流FileWriter类的对象fw调用close方法,关闭流,释放资源
        fw.close();
    }
}

2.Writer把字符数组往文件中写

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

/*

    常用方法:
        - public void write(char[] chs):写出一个字符数组。
        - public void write(char[] chs, int off, int len) :写出一个字符数组的一部分。
            参数:
                char[] chs: 字符数组
                int off: 起始索引
                int len: 写出字符的个数
        - public void write(String str) :写出一个字符串。
        - public void write(String str, int off, int len) :写出一个字符串的一部分。
            参数:
                String str: 字符串
                int off: 起始索引
                int len: 写出字符的个数

    步骤:
        1.创建文件字符输出流FileWriter类的对象fw,绑定目标文件
        2.文件字符输出流FileWriter类的对象fw调用write方法,写出字符到文件
        3.文件字符输出流FileWriter类的对象fw调用close方法,关闭流,释放资源


 */
public class Demo04Writer {
    public static void main(String[] args) throws IOException {
        //1.创建文件字符输出流FileWriter类的对象fw,绑定目标文件
        FileWriter fw = new FileWriter("day11\\fw2.txt");

        //2.文件字符输出流FileWriter类的对象fw调用write方法,写出字符到文件
        //写出一个字符数组
        char[] chs = "今天工作不努力,明天努力找工作".toCharArray();
        fw.write(chs);

        //把chs数组的内容 明天努力找工作 重新写一遍
        //写出一个字符数组的一部分
        fw.write(chs,8,7);

        //写出一个字符串
        String s = "键盘敲烂,年薪过百万";

        fw.write(s);

        //写出一个字符串的一部分, 年薪过百万 重新写一遍
        fw.write(s,5,5);

        //3.文件字符输出流FileWriter类的对象fw调用close方法,关闭流,释放资源
        fw.close();
    }
}

3.续写和换行

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

/*
    文件的续写与换行
    1.续写:
        FileWriter类的构造方法
            FileWriter(File path,boolean append)
            FileWriter(String path,boolean append)
                参数:
                    1.File/String类型的文件路径
                    2.boolean append
                        true: 追加写入,继续写入
                        false: 覆盖写入,重新写入
                        不指定第二个参数,默认是false
    2.换行:
        系统中的换行:
        - Windows系统里,每行结尾是 回车+换行 ,即\r\n;
        - Unix系统里,每行结尾只有 换行 ,即\n;
        - Mac系统里,每行结尾是 回车 ,即\r。从 Mac OS X开始与Linux统一。


 */
public class Demo05Writer {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("day11\\02_代码\\day11\\fw3.txt", true);
        fw.write("快到五一放假了....");
        //写换行
        fw.write("\r\n");
        fw.write("有什么安排呢?");
        //写换行
        fw.write("\r\n");
        fw.write("据说出去旅游,人很多...");
        //写换行
        fw.write("\r\n");
        fw.write("还是老实的敲代码吧?");
        //写换行
        fw.write("\r\n");
        fw.close();
    }
}

4.flash和close的区别

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;

/*
    flush和close的区别
        1.字节流内部没有缓冲区,只要调用write方法,就是写出到目的地,所以不关流,也不会丢失数据

        2.字符流内部有缓冲区,调用write方法,先写到缓冲区,如果缓冲区数据存满了,会自动刷新到目的地,
            如果没有执行关闭流的动作,导致缓冲区可能还有数据,程序停止,数据丢失

        3.flush方法,把缓冲区中的数据,刷新到目的地,执行flush以后,
            可以继续调用write方法写出数据

        4.close方法内部,会先执行一次flush操作
        5.close方法之后,不能继续调用write方法写出数据

        记住一句话: io流对象,使用完毕,务必关闭流对象
 */
public class Demo06FlushVSClose {
    public static void main(String[] args) throws IOException {
        /*FileOutputStream fos = new FileOutputStream("day11\\fc.txt");
        fos.write("你好".getBytes());*/

        FileWriter fw = new FileWriter("day11\\fc.txt");
        fw.write("你好\r\n");

        //调用flush方法,把缓冲区中的数据,刷新到目的地
        //fw.flush();

        fw.write("大家好\r\n");
        //调用flush方法,把缓冲区中的数据,刷新到目的地
        //fw.flush();

        /*while(true) {

        }*/
        //关闭流
        fw.close();
        //fw.write("好好学习,天天向↑\r\n");
    }
}

 

标签:write,fw,Writer,---,写出,IO,字符,FileWriter,public
来源: https://www.cnblogs.com/hujunwei/p/16110281.html