博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java IO详解(四)------字符输入输出流
阅读量:6702 次
发布时间:2019-06-25

本文共 2810 字,大约阅读时间需要 9 分钟。

File 类的介绍:

Java IO 流的分类介绍:

Java IO 字节输入输出流:

那么这篇博客我们讲的是字符输入输出流:Reader、Writer(下图红色长方形框内),红色椭圆框内是其典型实现,图片显示错误(FileReaderFileWriter

  

①、为什么要使用字符流?

  因为使用字节流操作汉字或特殊符号语言的时候容易乱码,因为汉字不止一个字节,为了解决这个问题,建议使用字符流。

②、什么情况下使用字符流?

  一般可以用记事本打开的文件,我们可以看到内容不乱码的。就是文本文件,可以使用字符流。而操作二进制文件(比如图片、音频、视频)必须使用字节流

 

 1、字符输出流:FileWriter

public abstract class Writer  extends Object  implements Appendable, Closeable, Flushable

  用于写入字符流的抽象类

  方法摘要:

  

  下面我们用 字符输出流 Writer  的典型实现 FileWriter 来介绍这个类的用法:

 

//1、创建源		File srcFile = new File("io"+File.separator+"a.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 写入 a.txt 文件中		//void write(char[] buffer):向外写出多个字符 buffer		out.write("Aa帅锅".toCharArray());//将 Aa帅锅 写入 a.txt 文件中		//void write(char[] buffer,int off,int len)		out.write("Aa帅锅".toCharArray(),0,2);//将 Aa 写入a.txt文件中		//void write(String str):向外写出一个字符串		out.write("Aa帅锅");//将 Aa帅锅 写入 a.txt 文件中				//4、关闭流资源		/***		 * 注意如果这里有一个 缓冲的概念,如果写入文件的数据没有达到缓冲的数组长度,那么数据是不会写入到文件中的		 * 解决办法:手动刷新缓冲区 flush()		 * 或者直接调用 close() 方法,这个方法会默认刷新缓冲区		 */		out.flush();		out.close();

  

 

 2、字符输入流:Reader

public abstract class Reader  extends Object  implements Readable, Closeable

  用于读取字符流的抽象类。

  方法摘要:

  

  下面我们用 字符输入流 Reader  的典型实现 FileReader 来介绍这个类的用法:

 

//1、创建源		File srcFile = new File("io"+File.separator+"a.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、用字符流完成文件的复制

 

/**		 * 将 a.txt 文件 复制到 b.txt 中		 */		//1、创建源和目标		File srcFile = new File("io"+File.separator+"a.txt");		File descFile = new File("io"+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();

  

 

转载地址:http://aagoo.baihongyu.com/

你可能感兴趣的文章
python3基础3--数据类型--数据运算--表达式if -else-while-for
查看>>
如何学习前端 转载
查看>>
性能测试的重要意义(一)
查看>>
简单的文件上传功能实现(java)
查看>>
MySQL的简单使用
查看>>
浮动问题
查看>>
hausaufgabe--python 18- Defined specific Functions
查看>>
Django的视图层
查看>>
如何open一个新tab页面
查看>>
iOS开发UI篇—简单介绍静态单元格的使用
查看>>
转:Yupoo(又拍网)的系统架构
查看>>
.读取excel表格(JAVA)
查看>>
清空sql server日志
查看>>
c# 读取记事本txt文档到DataTable中
查看>>
快速通读《现代软件工程——构建之法》
查看>>
Xcode7,ios9 issue ,warning合集
查看>>
Spring整合Quartz定时任务 在集群、分布式系统中的应用(Mysql数据库环境)
查看>>
【英语-刘晓艳-词汇】词汇06
查看>>
Apache版本兼容性问题
查看>>
WIN7 Wireshark: There are no interfaces on which a capture can be done
查看>>