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

 ------- android培训java培训、期待与您交流! ---------- 

[java]  view plain copy
  1. /* 
  2. IO流之字符流的两个基类 
  3. Reader Writer 
  4. 数据的最常见体现形式是:文件。 
  5. FileReader FileWriter 
  6. 读取缓冲技术 
  7. BufferedReader BufferedWriter 
  8. */  
  9. 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. }  

------- android培训java培训、期待与您交流! ----------

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值