IO流05_OutputStream和Writer输出流

Posted HigginCui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO流05_OutputStream和Writer输出流相关的知识,希望对你有一定的参考价值。

【输出流中的字节流和字符流】

【OutPutStream和Writer】

[ OutputStream和Writer中包含的方法 ]

void write(int c)       将指定的字节/字符输出到输出流中,其中c既可以是字节,也可是字符

void read( byte[] buf ) / void read( char[] buf )    将字节/字符数组中的数据输出到指定的输出流中

void read( byte[] buf, int off, int len ) / void read( char[] buf, int off, int len )  将字节/字符数组中的数据从off位置开始,长度为len的字节/字符输出到输出流中。

 

[ Writer特有的两个方法(针对String类型的数据) ]

void write( String str )  将str字符串中包含的字符输出到指定的输出流中

void write( String str, int off, int len ) 将str字符串里从off位置开始,长度为len的字符串输出到指定的输出流中。

 

【测试1:FileInputStream输入内容,FileOutputStream将内容输出到磁盘】

package com.Higgin.part3;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("c://testJavaIO/aaa.java");  //创建字符输入流
        FileOutputStream fos = new FileOutputStream("c://testJavaIO/aaaNew.java");
        byte[] bbuf=new byte[1024];
        int hasInput=0;
        while((hasInput=fis.read(bbuf))>0){  //从aaa.java文件中不断取出数据
            fos.write(bbuf,0,hasInput);  //每读取一次数据,将数据写入输出流
        }
        /*
         *  直接InputStream.write(String)会出错,下面的fos.write(testStr);
         *  使用InputStream.write(String.getBytes())处理就可以了!如下就是修改后的fos.write(testStr.getBytes());
         */
        String testStr="哈哈哈哈哈哈";
        fos.write(testStr.getBytes());  //处理过str后就可以将流输出了
        fis.close();
        fos.close();
    }
}

【运行前文件位置】

【运行后的结果】

 

 【测试2:FileWriter将String内容输出到磁盘】

package com.Higgin.part3;

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

public class FileWriteDemo {
    public static void main(String[] args) throws IOException {
        FileWriter fw=new FileWriter("c://testJavaIO/ddd.txt");
        
        fw.write("HigginCui 2016阅读的金庸小说\\n");  //可以直接将String类型的数据写入Writer类型的输出流中,Writer类特有,OutputStream得先将字符串进行转化为byte[]数组
        fw.write("天龙八部\\n");
        fw.write("射雕英雄传\\n");
        fw.write("神雕侠侣\\n");
        fw.write("笑傲江湖\\n");
        
        fw.close();
    }
}

 【运行后的结果】

 

【注意】

使用java的IO流执行输出的时候,不要忘记关闭输出流,关闭输出流有以下原因:

1.保证物理流的资源被收回

2.将输出流缓冲区中的数据flush到物理节点中(因为在执行close()方法之前,自动执行flush()方法 )

 

以上是关于IO流05_OutputStream和Writer输出流的主要内容,如果未能解决你的问题,请参考以下文章

IO流介绍

Java-IO

第十周总结

javaAPI_IO流基础_字节流基础知识

OutputStream 和 Writer

Java IO流--Reader流(字符输入流) & Writer流(字符输出流)