700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > IO流(学习Java第24天)(转换流OutputStreamWriter 转换流InputStreamReader 字符流便捷类)

IO流(学习Java第24天)(转换流OutputStreamWriter 转换流InputStreamReader 字符流便捷类)

时间:2022-10-29 10:33:38

相关推荐

IO流(学习Java第24天)(转换流OutputStreamWriter 转换流InputStreamReader 字符流便捷类)

目录

一、转换流OutputStreamWriter

二.转换流InputStreamReader

三.字符流便捷类

一、转换流OutputStreamWriter

java.io.OutputStreamwriter类,继承Writer类,他是字符输出流,只能操作文本文件,不能操作其他类型文件。OutputStreamwriter是字符流通向字节流的桥梁(字符流转成字节流),使用指定的字符集将字符编码为字节。它的字符集可以由名称指定,也可以接受平台的默认字符集。

OutputStreamWriter构造方法 OutputStreamWriter(OutputStream in): 创建一个使用默认字符集的字符流OutputStreamWriter(OutputStream in, String charsetName): 创建一个指定字符集的字符流

OutputStreamWriter isr = new OutputStreamWriter(new FileOutputStream("out.txt"));OutputStreamWriter isr2 = new OutputStreamWriter(new FileOutputStream("out.txt") , "GBK");

写出数据方法 void write(int c)写出单个字符void write(char[] ch)写出字符数组void write(char[] ch,int off,int len)写出字符数组一部分,开始索引和写出的个数void write(String s)写入字符串void flush()`刷新该流的缓冲,字符流写数据会先写在内存中,刷新后才会到达目的文件

/*** 字符输出流 java.io.OutputStreamWriter 继承Writer类* Writer类: 具备写入数据的方法 write* write(int c)写入单个字符* write(char[] c)写入字符数组* write(char[] c,int off,int len)写入字节数组一部分,开始索引,写入的个数* write(String str) 写入字符串* OutputStreamWriter类称为转换流: 字符流通向字节流的桥梁,字符转成字节*转换: 字符,查询编码表,得到字节,交给字节流处理* 注意: 字符流写入数据: 数据写入到内存中,而不是目的文件* 字符输出流父类 Writer,提供方法 flush()刷新,数据从内存中刷新到目的文件*/public class Demo {public static void main(String[] args) throws IOException {//writeUTF();writeGBK();}/*使用转换流OutputStreamWriter,将汉字写入文本文件采用编码表是UTF-8构造方法:OutputStreamWriter(OutputStream out) 传递字节输出流 new FileOutputStream*/public static void writeUTF()throws IOException {//创建字节输出流FileOutputStream fos=new FileOutputStream("d:\\sp\\utf.txt");//创建转换流对象,构造方法中,传递字节输出流OutputStreamWriter osw=new OutputStreamWriter(fos);//转换流方法write写入数据osw.write("你好");//osw.flush();osw.close();//关闭流,刷新}/*使用转换流OutputStreamWriter,将汉字写入文本文件采用编码表是GBK构造方法:OutputStreamWriter(OutputStream out,String 编码表名字) 传递字节输出流 new FileOutputStream*/public static void writeGBK()throws IOException{//创建字节输出流FileOutputStream fos=new FileOutputStream("d:\\sp\\gbk.txt");//创建转换流对象,构造方法传递字节输出流,传递字符串编码表OutputStreamWriter osw=new OutputStreamWriter(fos,"GBK");osw.write("你好");osw.close();}}

二.转换流InputStreamReader

java.io.InputStreamReader类,继承Reader类,他是字符输入流,只能操作文本文件,不能操作其他类型文件。InputStreamReader是字节流通向字符流的桥梁(字节流转成字符流),使用指定的字符集将字符编码为字节。它的字符集可以由名称指定,也可以接受平台的默认字符集。

InputStreamReader构造方法 InputStreamReader(InputStream in): 创建一个使用默认字符集的字符流InputStreamReader(InputStream in, String charsetName): 创建一个指定字符集的字符流

InputStreamReader isr = new InputStreamReader(new FileInputStream("in.txt"));InputStreamReader isr2 = new InputStreamReader(new FileInputStream("in.txt") , "GBK");

InputStreamReader读取数据方法 int read()读取单个字符,读取到文件末尾时返回-1int read(char[] ch)读取字符存储到数组中个,返回读取到的字符个数,读取到文件末尾时返回-1

/*** @create -02-19 14:57* java.io.InputStreamReader 继承Reader 字符输入流* InputStreamReader字符输入流,父类Reader定义好的读取的方法* int read()读取单个字符* int read(char[] c)读取字符,存储在数组中* InputStreamReader是转换流, 字节流通向字符流的桥梁,字节转成字符*/public class Demo {public static void main(String[] args) throws IOException {//readUTF();writeGBK();}/*InputStreamReader转换流,读取文本文件使用编码表UTF-8构造方法:InputStreamReader(InputStream in) 传递字节输入流,new FileInputStream*/public static void readUTF()throws IOException {//创建字节输入流FileInputStream fis=new FileInputStream("d:\\sp\\utf.txt");//创建转换流对象InputStreamReader isr=new InputStreamReader(fis);char[] ch=new char[1024];int len=0;while((len=isr.read(ch))!=-1){//数组转成字符串打印System.out.println(new String(ch,0,len));}isr.close();}/**InputStreamReader转换流,读取文本文件使用编码表GBK构造方法:InputStreamReader(InputStream in,String 编码表名) 传递字节输入流new FileInputStream*/public static void writeGBK()throws IOException{//创建字节输入流对象FileInputStream fis=new FileInputStream("d:\\sp\\gbk.txt");//创建转换流对象,构造方法传递字节输入流,指定使用编码表InputStreamReader isr=new InputStreamReader(fis,"gbk");char[] ch=new char[1024];int len=0;while( (len = isr.read(ch)) !=-1){//数组转成字符串打印System.out.println(new String(ch,0,len));}}}

三.字符流便捷类

使用转换流进行文本文件的读写可以进行编码表的设置,但是我们经常使用的是平台默认的编码表进行文本文件操作的,因此可以选择字符流的便捷类来使用。

FileWriter继承OutputStreamWriter,使用平台默认编码表写出数据。

FileReader继承InputStreamReader,使用平台默认编码表读取数据。

FileWriter类构造方法 FileWriter(File file): 创建一个新的 FileWriter,给定要读取的File对象FileWriter(String fileName): 创建一个新的 FileWriter,给定要读取的文件的名称

/*** 字符输出流使用的便捷类* java.io.FileWriter 写入文本文件 继承Writer* FileWriter继承转换流OutputStreamWriter* OutputStreamWriter父类,可以指定编码表* FileWriter子类,只能使用默认的编码表* write写入数据的方法:* 写入单个字符,字符数组,字符串* 构造方法,传递字符串的文件名*/public class Demo {public static void main(String[] args) throws IOException {//创建字符输出流的便捷流FileWriter fw=new FileWriter("d:\\sp\\123.txt");//写入数据fw.write(97);//单个字符char[] ch="helloWorld".toCharArray();fw.write(ch);fw.write("呵呵哈哈");fw.close();}}

/*** 字节流写入数据: 追加和换行* 流对象构造方法,第二个参数true* 换行问题:* Windows: \r\n* Linux: \n* Mac:\r*/public class FileWriterDemo02 {public static void main(String[] args) throws IOException{//追加写入FileWriter fw = new FileWriter("e:/456.txt",true);fw.write("第一行\r\n");fw.write("第二行");fw.close();}}

FileReader类的构造方法 FileWriter(File file): 创建一个新的 FileWriter,给定要读取的File对象。 FileWriter(String fileName): 创建一个新的 FileWriter,给定要读取的文件的名称。

/*** java.io.FileReader 读取字符文件的便捷类* 继承 InputStreamReader ,继承Reader* FileReader读取文本文件,不能改变编码表的,使用默认的UTT-8* 构造方法:FileReader(String 文件名)*/public class Demo {public static void main(String[] args) throws IOException {//创建字符输入流的便捷流类对象FileReader fr=new FileReader("d:\\sp\\utf.txt");char[] ch=new char[1024];int len=0;while((len=fr.read(ch)) !=-1){System.out.println(new String(ch,0,len));}fr.close();}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。