博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【JavaSE】day11_Reader和Writer_PrintWriter_BufferedReader
阅读量:4305 次
发布时间:2019-05-27

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

【JavaSE】day11_Reader和Writer_PrintWriter

1.Reader和Writer

1)Writer,Reader 字符输出,输入流的父类。

 * 字符流特点:以字符为单位读写数据。

 * 字符流只能读写文本数据。所以不要用字符流读取非文本文件。

 * 字符流只是简化了我们对于字符串的读写操作不用自行在字节与字符之间转换。

 * 所以字符流都是高级流,底层本质还是要用字节读写数据。

2)OutputStreamWriter

按照给定的字符集,将字符串转换为一组字节后写出。

代码:

package day03;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;/** * Writer,Reader 字符输出,输入流的父类。 * 字符流特点:以字符为单位读写数据。 * 字符流只能读写文本数据。所以不要用字符流读取非文本文件。 * 字符流只是简化了我们对于字符串的读写操作不用自行在 * 字节与字符之间转换。 * 所以字符流都是高级流,底层本质还是要用字节读写数据。 * */public class OSWDemo {	public static void main(String[] args) throws IOException {		FileOutputStream fos = new FileOutputStream("osw.txt");				/*		 * 特点:		 * 按照给定的字符集,将字符串转换为一组字节后写出。		 */		OutputStreamWriter osw = new OutputStreamWriter(fos,"gbk");				String str = "//我爱java";				/*		 * 将给定的字符串转换为一组字节后写出。		 */		osw.write(str);				osw.write("我爱北京天安门");						osw.close();			}}
3)java.io.InputStreamReader

字符输入流,特点:可以按照指定的字符集读取字符。

代码:

package day03;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;/** * java.io.InputStreamReader * 字符输入流 * 特点:可以按照指定的字符集读取字符 * */public class ISRDemo {	public static void main(String[] args) throws IOException {		FileInputStream fis = new FileInputStream("osw.txt");				//为了方便读取字符,可以使用字符输入流		InputStreamReader isr = new InputStreamReader(fis,"gbk");				int d = -1;		while((d=isr.read())!=-1){			char c = (char)d;			System.out.print(c);		}				isr.close();	}}

2.PrinterWriter

1)

 * 缓冲字符输出流:BufferedWriter

 * 由于内部维护了一个字符数组作为缓冲区。所以写出字符串的效率高,而且还有一个特点就是可以以行为单位写出字符串。

 * PrintWriter:具有自动行刷新功能的缓冲字符输出流.由于该流的缓冲功能是使用BufferedWriter实现的,并且其提供了更多功能,所以比较常用。创建PrintWriter时,其总是先创建BufferedWriter作为缓冲功能。

2)直接操作文件的构造方法

         * PrintWriter(File file)

         * PrintWriter(String pathName) 

   直接操作文件的这两个构造方法都支持第二个参数,就是指定字符集。

代码:

package day03;import java.io.IOException;import java.io.PrintWriter;/** * 缓冲字符输出流:BufferedWriter * 由于内部维护了一个字符数组作为缓冲区。所以写出 * 字符串的效率高,而且还有一个特点就是可以以行为 * 单位写出字符串。 *  * PrintWriter:具有自动行刷新功能的缓冲字符输出流 * 由于该流的缓冲功能是使用BufferedWriter实现的, * 并且其提供了更多功能,所以比较常用。 * 创建PrintWriter时,其总是先创建BufferedWriter * 作为缓冲功能。 * */public class PWDemo {	public static void main(String[] args) throws IOException {		/*		 * 直接操作文件的构造方法		 * PrintWriter(File file)		 * PrintWriter(String pathName) 		 * 		 * 直接操作文件的这两个构造方法都支持第二个参数,就是指定字符集。		 */		PrintWriter pw = new PrintWriter("pw.txt","GBK");				pw.println("woaibeijingtiananmen");				pw.println("我爱北京天安门");						pw.close();			}}
3)PrintWriter可以处理其他流。

 * 既可以处理字节流,也可以处理字符流。但是直接处理字节流的弊端在于,不能指定字符集。

 * 当创建PrintWriter并处理其他流时: 即:构造方法的第一个参数为流

 * 那么这些构造方法都支持第二个参数,是一个boolean值,当该值为true时,PrintWriter就具有自动行刷新功能。

package day03;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.PrintWriter;/** * PrintWriter可以处理其他流 * 既可以处理字节流,也可以处理字符流。 * 但是直接处理字节流的弊端在于,不能指定字符集。 *  * 当创建PrintWriter并处理其他流时: * 即:构造方法的第一个参数为流 * 那么这些构造方法都支持第二个参数,是一个boolean值, * 当该值为true时,PrintWriter就具有自动行刷新功能。 * */public class PWDemo2 {	public static void main(String[] args) throws IOException {		FileOutputStream fos = new FileOutputStream("pw1.txt");				OutputStreamWriter osw = new OutputStreamWriter(fos,"GBK");				/*		 * 当第二个参数为true时,该PrintWriter就具有		 * 自动行刷新功能,即:		 * 每当调用println()方法时,将字符串写出后自动flush()		 * 需要知道:自动行刷新会提高写出次数,降低写出		 * 效率,但是可以提高写出的及时性。		 */		PrintWriter pw = new PrintWriter(osw,true);				pw.println("我爱北京天安门");						pw.close();			}}

3.java.io.BufferedReader

1)缓冲字符输入流

 * 特点:需要处理一个字符流,并且可以以行为单位读取字符串。

2)String readLine()

         * BufferedReader提供了该方法可以以行为单位读取字符串。

         * 该方法会顺序读取若干字符,直到遇到换行符为止,然后将换行符之前的所有字符转换为一个字符串后返回。该字符串中不包含换行符!若返回值为null,表示读取到文件末尾。

代码:

package day03;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;/** * java.io.BufferedReader * 缓冲字符输入流 * 特点:需要处理一个字符流,并且可以以行为单位 * 读取字符串。 * */public class BRDemo {	public static void main(String[] args) throws IOException {		/*		 * 读取当前源文件,并将内容输出到控制台		 */		FileInputStream fis = new FileInputStream(							"."+File.separator+"src"+File.separator+							"day03"+File.separator+"BRDemo.java"							);		InputStreamReader isr = new InputStreamReader(fis,"GBK");				BufferedReader br = new BufferedReader(isr);				PrintWriter pw = new PrintWriter("BRDemo.java","UTF-8");		/*		 * String readLine()		 * BufferedReader提供了该方法可以以行为单位		 * 读取字符串。		 * 该方法会顺序读取若干字符,直到遇到换行符为止,		 * 然后将换行符之前的所有字符转换为一个字符串后		 * 返回。该字符串中不包含换行符!		 * 若返回值为null,表示读取到文件末尾。		 */		String line = null;		while((line=br.readLine())!=null){			//System.out.println(line);			pw.println(line);		}				pw.close();		br.close();			}}

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

你可能感兴趣的文章
关于list对象的转化问题
查看>>
VOPO对象介绍
查看>>
suse创建的虚拟机,修改ip地址
查看>>
linux的挂载的问题,重启后就挂载就没有了
查看>>
docker原始镜像启动容器并创建Apache服务器实现反向代理
查看>>
docker容器秒死的解决办法
查看>>
管理网&业务网的一些笔记
查看>>
openstack报错解决一
查看>>
openstack报错解决二
查看>>
linux source命令
查看>>
openstack报错解决三
查看>>
乙未年年终总结
查看>>
子网掩码
查看>>
第一天上班没精神
查看>>
启动eclipse报错:Failed to load the JNI shared library
查看>>
eclipse安装插件的两种方式在线和离线
查看>>
linux下源的相关笔记(suse)
查看>>
linux系统分区文件系统划分札记
查看>>
Linux(SUSE 12)安装Tomcat
查看>>
Linux(SUSE 12)安装jboss4并实现远程访问
查看>>