字符输入流
package com.cvicse.io.demo; import java.io.File; import java.io.FileReader; import java.io.Reader; /** * Reader 字符输入流 表示向程序中输入 * 全部数据读取 * @author 13169 * */ public class ReaderDemo01 { public static void main(String[] args) throws Exception { //1.定义输出文件的路径 File file = new File("E:"+File.separator+"IODemo"+File.separator+"my.txt"); //如果文件存在 if(file.exists()) { //2.使用字符输入流读取 Reader reader = new FileReader(file); char[] data = new char[1024]; //3.进行数据读取 reader.read(data); System.out.println(new String(data)); //4.关闭输入流 reader.close(); } /** * 字节流与字符流的区别 * 1.字节流直接与终端进行数据交互,而字符流需要将数据经过缓冲区才可以与终端交互 * 2.在使用OutputStream进行输出时,即使最后没有关闭输出流,内容也可以正常输出, * 而使用Writer进行输出时,没有关闭输出流,则表示在缓冲区中的数据不会被强制性的清空,所以就不会输出数据。 * 3.开发之中,对于字节数据处理较多,例如:图片,音乐,电影,文字。如果处理中文数据,建议使用字符流,其他情况建议使用字节流。 */ } }字符输出流
package com.cvicse.io.demo; import java.io.File; import java.io.FileWriter; import java.io.Writer; /** * 文件输出流 FileInputStream 表示向程序中输入 * 全部数据读取 * @author 13169 * */ public class WriterDemo01 { public static void main(String[] args) throws Exception { //1.定义输出文件的路径 File file = new File("E:"+File.separator+"IODemo"+File.separator+"my.txt"); //2.创建文件目录 if(!file.getParentFile().exists()) { //如果文件目录不存在 file.getParentFile().mkdirs(); //创建目录 } //3.使用Writer 和其子类进行实例化 Writer out = new FileWriter(file); String str = "Hello World !!!"; //4.内容输出 out.write(str); //5.关闭输出流 //强制清空缓冲区out.flush(); out.close(); } }字节输出流转换为字符输出流
package com.cvicse.io.demo; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; /** * 转换流 字节输出流转换为字符输出流 * @author 13169 * */ public class InputStreamReaderDemo { public static void main(String[] args) throws Exception { File file = new File("E:"+File.separator+"IODemo"+File.separator+"my.txt"); if(!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } //字节输出流 OutputStream output = new FileOutputStream(file); //将output传递给字符输出流 Writer writer = new OutputStreamWriter(output); writer.write("你好,世界!!!"); //关闭字符输出流 writer.close(); } }