黑马程序员;IO流之字符流

<span style="font-size:18px;">01./* 
02.IO流之字符流的两个基类 
03.Reader Writer 
04.数据的最常见体现形式是:文件。 
05.FileReader FileWriter 
06.读取缓冲技术 
07.BufferedReader BufferedWriter 
08.*/  
09.import java.io.*;  
10.class IODemo  
11.{  
12.    public static void main(String[] args) throws IOException//为了演示代码简洁所以抛出异常,应该try,catch  
13.    {  
14.        fileWriter();  
15.        contWrite();  
16.        fileRead();  
17.        bufWrite();  
18.        bufRead();  
19.    }  
20.  
21.//FileWriter对象演示及IO异常的处理+++++++++++++++++++++++++++++++++++++++++++++  
22.    public static void fileWriter()   
23.    {  
24.        FileWriter fw = null;  
25.        try  
26.        {  
27.            //创建一个FileWriter对象,该对象一被初始化就要明确被操作的文件。  
28.            //创建对象时会把demo.txt文件创建到指定目录,如果有同名文件存在会被覆盖。  
29.            fw = new FileWriter("demo.txt");  
30.            //调用write方法,将字符串写入到流中。  
31.            fw.write("abvadf");  
32.            //刷新流对象中的缓冲数据,将数据刷到目的文件中。  
33.            fw.flush();  
34.            //关闭流资源,但关闭前会调用flush刷新一次。flush刷新后流可以继续使用。  
35.            //fw.close();     
36.        }  
37.        catch (IOException e)  
38.        {  
39.            throw new RuntimeException("读写失败");       
40.        }  
41.        finally  
42.        {  
43.            try  
44.            {  
45.                //一定要对fw进行非空判断,如果为空就无法调用close方法。  
46.                if(fw!=null)  
47.                    fw.close();  
48.            }  
49.            catch (IOException e)  
50.            {  
51.                throw new RuntimeException("关闭失败");  
52.            }  
53.        }  
54.    }  
55.  
56.//FileWriter对已有文件的数据续写演示,这里抛出异常是为了演示代码简洁,实际应该向上面的代码做try,catch处理++++++++++++++++++++++++++++++++++++++++++++++  
57.    public static void contWrite() throws IOException  
58.    {  
59.        //传递一个true参数,代表不覆盖已有文件,并在已有文件的末尾处续写数据  
60.        FileWriter fw = new FileWriter("demo.txt",true);  
61.        fw.write("续写");  
62.        fw.write("\r\n换行演示");//windows中"\r\n"代表换行  
63.        fw.flush();  
64.    }  
65.  
66.//FileReader演示两种读取方式  
67.    public static void fileRead()throws IOException//为了演示所有抛出异常,应该try,catch处理。  
68.    {  
69.        //创建一个文件读取流对象,和指定名称的文件相关联。  
70.        //要保证该文件是已经存在的,如果不存在会发生FileNotFoundException异常。  
71.        FileReader fr = new FileReader("demo.txt");  
72.  
73.//++++++第一种读取方式:调用读取流对象的read方法。++++++++++++++++++++  
74.        //read():一次读一个字符返回字符对应的int值,而且自动往下读。读到末尾没有数据时会返回-1  
75.        /* 
76.        int ch = 0; 
77.        while((ch=fr.read())!=-1) 
78.        { 
79.            System.out.println((char)ch); 
80.        } 
81.        */  
82.        /* 
83.        while(true) 
84.        { 
85.            int ch = fr.read(); 
86.            if(ch==-1) 
87.                break; 
88.            System.out.println((char)ch);    
89.        } 
90.        */  
91.  
92.//++++++第二种读取方式:read(char[])方法把读到的字符存到了字符数组里+++++++++++++++++++++++++++++++++++++++++++++++++  
93.          
94.        //所以要建立一个数组char[],如果定义的字符数组长度不够时就返回read读到的字符个数,当没有数据时返回-1。  
95.          
96.        char[] buf = new char[1024];//一般定义1024的整数倍。  
97.        int num = 0;  
98.        while((num = fr.read(buf))!=-1)  
99.        {  
100.            //这里建议不用println如果数据超过1024时,会在不该换行的时候换行  
101.            System.out.print(new String(buf,0,num));  
102.        }  
103.        fr.close();  
104.    }  
105.  
106.//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
107.    /* 
108.    读写缓冲区:BufferedWriter BufferedReader  
109.    */  
110.    //++++BufferedWriter演示++++++++++++++++++++++++++++  
111.    public static void bufWrite()throws IOException  
112.    {  
113.        //创建一个字符写入流对象  
114.        FileWriter fw = new FileWriter("buf.txt");  
115.          
116.        //将需要缓冲的流对象作为参数传递给缓冲区的构造函数。  
117.        BufferedWriter bufw = new BufferedWriter(fw);  
118.        bufw.write("dsafdasf");  
119.        //缓冲区提供一个跨平台的换行方法newLine();只能在缓冲区对象中使用。  
120.        bufw.newLine();  
121.        //记住,只要用到缓冲区就要记得刷新  
122.        bufw.flush();  
123.        //其实关闭缓冲区就是关闭,使用该缓冲区的流对象。所以fw.close()可以不写。  
124.        bufw.close();  
125.      
126.    }  
127.    //++++BufferedReader演示++++++++++++++++++++++++++++  
128.    public static void bufRead()throws IOException  
129.    {  
130.        BufferedReader bufr = new BufferedReader(new FileReader("buf.txt"));  
131.        //缓冲区提供了读一行的方法readLine();读到无数据时返回null  
132.        String line = null;  
133.        while((line=bufr.readLine())!=null)  
134.        {  
135.            System.out.println(line);  
136.            bufr.readLine();  
137.        }  
138.        bufr.close();  
139.  
140.    }  
141.}  
</span>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值