375flush方法&close方法的区别和376字符输出流写其他数据的方法

flush方法和close方法的区别

flush会输出缓冲区内容,流可以正常使用。
close会输出缓冲区内容并且关闭流。(但是close中是否直接调用flush,甚至是否输出缓冲区内容都需要看具体实现)

 
/*
    flush方法和close方法的区别
        - flush :刷新缓冲区,流对象可以继续使用。
        - close:  先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
 */
public class Demo02CloseAndFlush {
    public static void main(String[] args) throws IOException {
        //1.创建FileWriter对象,构造方法中绑定要写入数据的目的地
        FileWriter fw = new FileWriter("e.txt");
        //2.使用FileWriter中的方法write,把数据写入到内存缓冲区中(字符转换为字节的过程)
        //void write(int c) 写入单个字符。
        fw.write(97);
        //3.使用FileWriter中的方法flush,把内存缓冲区中的数据,刷新到文件中
        fw.flush();
        //刷新之后流可以继续使用
        fw.write(98);
 
        //4.释放资源(会先把内存缓冲区中的数据刷新到文件中)
        fw.close();
 
        //close方法之后流已经关闭了,已经从内存中消失了,流就不能再使用了
        fw.write(99);//IOException: Stream closed
    }
}

 

 

字符输出流写数据的其他方法

void write(char[] cbuf)写入字符数组

abstract void write(char[] cbuf,int off,int len)写入字符数组的某一部分,off数组的开始索引。len写的字符个数

void write(String str)写入字符串

void write(String str,int off,int len)写入字符串的某一部分,off字符串的开始索引,len写的字符个数

 
public class Demo03Writer {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("file\\a.txt");
        char[] cs = {'a','b','c','e'};
        //void write(char[] cbuf)写入字符数组
        fw.write(cs);
        //abstract void write(char[] cbuf,int off,int len)写入字符数组的某一部分,off数组的开始索引。len写的字符个数
        fw.write(cs,1,3);
        //void write(String str)写入字符串
        fw.write("杰瑞");
        // void write(String str,int off,int len)写入字符串的某一部分,off字符串的开始索引,len写的字符个数
        fw.write("汤姆",3,2);
        fw.close();

    }
}
 
 
/*
字符输出流写数据的其他方法
void write(char[] cbuf)
          写入字符数组。
abstract  void write(char[] cbuf, int off, int len)写入字符数组的某一部分。
void write(String str)
          写入字符串。
void write(String str, int off, int len)
          写入字符串的某一部分。
 */
public class Demo03Writer {
    public static void main(String[] args) throws IOException {
        FileWriter  fw = new FileWriter("D:\\file\\a.txt");
        //void write(char[] cbuf) 写入字符数组。
        char[] chars= {'a','b','c','d','e'};
        fw.write(chars);//abcde
        //void write(char[] cbuf, int off, int len)写入字符数组的某一部分。
        fw.write(chars,1,3); //abcdebcd
        //void write(String str)   写入字符串
        fw.write("汤姆");//abcdebcd传智播客
       // void write(String str, int off, int len)
        fw.write("杰瑞",2,3);//abcdebcd传智播客程序员
 
 
        fw.close();
        }
    }
posted @ 2022-07-13 09:03  ja不会va  阅读(49)  评论(0)    收藏  举报