黑马程序员-IO流中的字符流

来源:互联网 发布:下载动画的软件 编辑:程序博客网 时间:2024/05/17 03:04

  ------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

IO流是用来处理设备之间的数据传输

JAVA对数据的操作是通过流的方式

JAVA用于操作流的对象都在IO包中

流按操作数据分为两种:字节流和字符流

字符流的抽象基类:Reader,Writer。

字符流的特点:
既然IO流是用于操作数据的。
那么数据的最常见体现形式是:文件,即FileReader和FileWriter
用于操作文件的子类对象FileWriter,该对象一被初始化就必须要有对象存在,构造函数不为空。

读取方式一:字符读取

<span style="font-size:18px;">import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;public class IOReaderTest {public static void main(String[] args){FileReader fr1 = null;int ch=0;//同过字符读取数据try {fr1=new FileReader("c:\\demo.txt");while((ch=fr1.read())!=-1)//如果没有读到数据末尾标记,则循环继续{System.out.println((char)ch);}}catch (Exception e) {System.out.println("文件不存在");}finally{try{if(fr1!=null)fr1.close();//如果文件存在,关闭流}catch(Exception ex){System.out.println(ex.toString());}}}</span><span style="font-size: 14px;">}</span>

读取方式二:字符数组读取

<span style="font-size:18px;">import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;public class IOReaderTest {public static void main(String[] args){FileReader fr2 = null;char[] ch=new char[1024];//通过字符数组缓冲区读取数据int num =0;//定义一个标记try {fr2=new FileReader("c:\\demo.txt");while((num=fr2.read(ch))!=-1)//如果没有读到数据末尾标记,则循环继续{System.out.println(new String(ch,0,num));//传建一个字符串对象存储读取的字符}}catch (Exception e) {System.out.println("文件不存在");}finally{try{if(fr2!=null)fr2.close();//如果文件存在,关闭流}catch(Exception ex){System.out.println(ex.toString());}}}}</span>

字符流的缓冲区
缓冲区的出现提高了对数据的读写效率
对应类:BufferedReader和BufferedWriter
在创建缓冲区之前,必须要先有流对象。
FileWriter fw=new FileWriter("buf.txt");
为了提高字符写入流效率,加入了缓冲技术。

读取

<span style="font-size:18px;">import java.io.BufferedReader;</span>
<span style="font-size:18px;">import java.io.FileNotFoundException;</span>
<span style="font-size:18px;">import java.io.FileReader;public class BufferReaderDemo {public static void main(String[] args) {FileReader fr = null;BufferedReader bufr = null;//创建null缓冲区 try {fr = new FileReader("c:\\demo.txt");//关联文件bufr = new BufferedReader(fr);//字符流缓冲区关联流对象,提高效率String line = null;while((line=bufr.readLine())!=null)//判断缓冲区是否为空{System.out.println(line);//将读取到的数据打印在控制台上}} catch (Exception e) {System.out.println("文件不存在");}finally{try{if(fr!=null)fr.close();//关闭文件读取流对象if(bufr!=null)bufr.close();//关闭缓冲区}catch(Exception ex){System.out.println(ex.toString());}}}}</span><span style="font-size:24px;"></span>


写入
<span style="font-size:18px;">import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;public class BufferReaderDemo {public static void main(String[] args) {FileReader fr = null;//文件读取流FileWriter fw = null;//文件写入流BufferedReader bufr = null;//创建null字符串输入流缓冲区 BufferedWriter bufw = null;//创建null字符串输出流缓冲区 try {fr = new FileReader("c:\\demo.txt");//关联文件fw = new FileWriter("c:\\demo1.txt",true);//设置为true只续写而不覆盖文件bufr = new BufferedReader(fr);//字符流缓冲区关联流对象,提高效率bufw = new BufferedWriter(fw);String line = null;while((line=bufr.readLine())!=null)//判断缓冲区是否为空{//System.out.println(line);//将读取到的数据打印在控制台上bufw.write(line);bufw.newLine();//每写入一行,开始新的一行,相当于回车bufw.flush();//将写入的数据实时刷新}} catch (Exception e) {System.out.println("文件不存在");}finally{try{if(fr!=null)fr.close();//关闭文件读取流对象if(bufr!=null)bufr.close();//关闭缓冲区if(bufw!=null)bufw.close();}catch(Exception ex){System.out.println(ex.toString());}}}}</span>


0 0