Java IO详解(四)------字符流
Posted antao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java IO详解(四)------字符流相关的知识,希望对你有一定的参考价值。
1.字符输出流:Writer
FileWriter 是Writer的子类,以FileWriter 为例把字符串写入到文件
package stream; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; /*** * @ClassName: FileWriter * @Description: TODO * @Auther: chujiu * @Date: 2020/6/9 * @version : V1.0 */ public class FileWriterDemo { public static void main(String[] args) throws IOException { //1、创建源 File srcFile = new File("G:" + File.separator + "javabased" + File.separator + "JavaTest" + File.separator + "java.txt"); //2、创建字符输出流对象 Writer out = new FileWriter(srcFile); //3、具体的 IO 操作 /*** * void write(int c):向外写出一个字符 * void write(char[] buffer):向外写出多个字符 buffer * void write(char[] buffer,int off,int len):把 buffer 数组中从索引 off 开始到 len个长度的数据写出去 * void write(String str):向外写出一个字符串 */ //void write(int c):向外写出一个字符 out.write(65);//将 A 写入 java.txt 文件中 //void write(char[] buffer):向外写出多个字符 buffer out.write("Aa帅锅".toCharArray());//将 Aa帅锅 写入 java.txt 文件中 //void write(char[] buffer,int off,int len) out.write("Aa帅锅".toCharArray(), 0, 2);//将 Aa 写入java.txt文件中 //void write(String str):向外写出一个字符串 out.write("Aa帅锅");//将 Aa帅锅 写入 java.txt 文件中 //4、关闭流资源 /*** * 注意如果这里有一个 缓冲的概念,如果写入文件的数据没有达到缓冲的数组长度,那么数据是不会写入到文件中的 * 解决办法:手动刷新缓冲区 flush() * 或者直接调用 close() 方法,这个方法会默认刷新缓冲区 */ out.flush(); out.close(); } }
2.字符输入流:Reader
FileReader 是Reader子类,以FileReader 为例进行文件读取
package stream; import java.io.*; /*** * @ClassName: FileReaderDemo * @Description: TODO * @Auther: chujiu * @Date: 2020/6/9 * @version : V1.0 */ public class FileReaderDemo { public static void main(String[] args) throws IOException { //1、创建源 File srcFile = new File("G:" + File.separator + "javabased" + File.separator + "JavaTest" + File.separator + "java.txt"); //2、创建字符输出流对象 Reader in = new FileReader(srcFile); //3、具体的 IO 操作 /*** * int read():每次读取一个字符,读到最后返回 -1 * int read(char[] buffer):将字符读进字符数组,返回结果为读取的字符数 * int read(char[] buffer,int off,int len):将读取的字符存储进字符数组 buffer,返回结果为读取的字符数,从索引 off 开始,长度为 len * */ //int read():每次读取一个字符,读到最后返回 -1 int len = -1;//定义当前读取字符的数量 while ((len = in.read()) != -1) { //打印 a.txt 文件中所有内容 System.out.print((char) len); } //int read(char[] buffer):将字符读进字符数组 char[] buffer = new char[10]; //每次读取 10 个字符 while ((len = in.read(buffer)) != -1) { System.out.println(new String(buffer, 0, len)); } //int read(char[] buffer,int off,int len) while ((len = in.read(buffer, 0, 10)) != -1) { System.out.println(new String(buffer, 0, len)); } //4、关闭流资源 in.close(); } }
3.用字符流完成文件的复制
package stream; import java.io.*; /*** * @ClassName: FileCopying * @Description: TODO * @Auther: chujiu * @Date: 2020/6/9 * @version : V1.0 */ public class FileCopying { public static void main(String[] args) throws IOException { /** * 将 a.txt 文件 复制到 b.txt 中 */ //1、创建源和目标 File srcFile = new File("G:" + File.separator + "javabased" + File.separator + "JavaTest" + File.separator + "a.txt"); File descFile = new File("G:" + File.separator + "javabased" + File.separator + "JavaTest" + File.separator + "b.txt"); //2、创建字符输入输出流对象 Reader in = new FileReader(srcFile); Writer out = new FileWriter(descFile); //3、读取和写入操作 char[] buffer = new char[10];//创建一个容量为 10 的字符数组,存储已经读取的数据 int len = -1;//表示已经读取了多少个字节,如果是 -1,表示已经读取到文件的末尾 while((len=in.read(buffer))!=-1){ out.write(buffer, 0, len); } //4、关闭流资源 out.close(); in.close(); } }
以上是关于Java IO详解(四)------字符流的主要内容,如果未能解决你的问题,请参考以下文章
java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段
java内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段