黑马程序员——Java基础---IO


------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

首先感谢黑马、感谢素不相识的 毕老师

------------ 

第一讲     IO

  IO概述

 

a、特点:

        a.1)设备彼此的数据传输用到IOinput/outputstream

        a.2)数据的操作整个过程一般是由流的形式完成的。

        a.3)IO包中包含了操作流的类。

        a.4)字节流以及字符流两种形式

b、IO流的常用基类:

        b1)InputStream和OutputStream(字节流)

        b2)Reader和Writer(字符流)

注以此四个类派生出来的类,前缀表功能后缀是父类 

第二讲    字符流

一、简介

        a、正在使用的系统的编码为其默认编码。

        b、文字数据用字符流处理,媒体数据一般用字节流。

        c、既然IO流是用于操作数据的,那么数据的最常见体现形式是文件。查看API,找到一个专门用于操作文件的Writer子类对象:FileWriter,后缀是父类名。前缀是功能。

 

二、字符流的读写

1、写入字符流step

        a、FileWriter创建,一旦初始化,就有明确被操作的文件存在。若存在同名文件将被替换。这样数据存放的路径就明确下来。

        b、将字符串存入到流中调用函数write(String s)。

        c、注意这时只有调用flush()方法来刷新缓冲,数据方可以到达到目标文件。

        d、最后再调用close()。会完成最后一次的刷新,然后关闭流资源。

close()和flush二者比较:

        flush()流资源没有关闭;

       但close()刷新并关闭流。

 

 


   

class FileWriterDemo   

{  

     public static void main(String[] args)   

     {  

         writerDate("abcde");//写入数据  

         writerFrom("zheshi:\r\nshenma");//续写数据,并附换行操作  

     }  

   

     //在硬盘上创建一个文件并写入指定数据  

     public static void writerDate(String s)  

     {  

         FileWriter fw=null;  

         try  

         {  

             fw=new FileWriter("demo.txt");//创建文件  

             fw.write(s);//将数据写入流  

         }  

         catch (IOException e)  

         {  

             throw new RuntimeException("写入失败");  

         }  

         finally  

         {  

            if(fw!=null)  

                 try  

                 {  

                     fw.close();//将写入流的数据刷到指定文件内,并关闭流资源  

                 }  

                 catch (IOException e)  

                {  

                 }  

         }  

     }  

   

     //对已有文件的数据续写指定数据  

     public static void writerFrom(String s)  

     {  

         FileWriter fw=null;  

         try  

         {  

             fw=new FileWriter("demo.txt",true);//传递一个true参数,代表不覆盖已有的文件。  

             fw.write(s);  

         }  

         catch (IOException e)  

         {  

             throw new RuntimeException("写入失败");  

         }  

         finally  

         {  

             try  

             {  

                 if(fw!=null)  

                     fw.close();  

             }  

             catch (IOException e)  

             {  

             }  

         }  

     }  

 }  

import java.io.*; class FileWriterDemo { public static void main(String[] args)  { writerDate("abcde");//写入数据 writerFrom("zheshi:\r\nshenma");//续写数据,并附换行操作 }  //在硬盘上创建一个文件并写入指定数据 public static void writerDate(String s) { FileWriter fw=null; try { fw=new FileWriter("demo.txt");//创建文件 fw.write(s);//将数据写入流 } catch (IOException e) { throw new RuntimeException("写入失败"); } finally { if(fw!=null) try { fw.close();//将写入流的数据刷到指定文件内,并关闭流资源 } catch (IOException e) { } } }  //对已有文件的数据续写指定数据 public static void writerFrom(String s) { FileWriter fw=null; try { fw=new FileWriter("demo.txt",true);//传递一个true参数,代表不覆盖已有的文件。 fw.write(s); } catch (IOException e) { throw new RuntimeException("写入失败"); } finally { try { if(fw!=null) fw.close(); } catch (IOException e) { } } }}

2、读取字符流步骤

        1)文件读取流对象创建,与目标文件关联。

        2)调用read()函数。read()逐个字符读取。

        3)完成后调用close函数流资源关闭。

代码:

  

class  FileReaderDemo  

 {  

     public static void main(String[] args)   

     {  

         //第一种读取方式  

         singleCharReader();  

         //第二种读取方式  

         arrayCharReader();  

     }  

   

     //第一种读取方式,单个字符读取  

     public static void singleCharReader()  

     {  

         FileReader fr=null;  

         try  

         {  

               

             fr=new FileReader("demo.txt");//读取文件位置和文件名  

             for (int ch=0;(ch=fr.read())!=-1 ; )  

             {  

                 System.out.print((char)ch);  

             }  

         }  

         catch (IOException e)  

         {  

             throw new RuntimeException("读取失败");  

         }  

         finally  

         {  

             try  

             {  

                 if(fr!=null)  

                     fr.close();//关闭读取流资源  

             }  

             catch (IOException e)  

             {  

             }  

         }  

     }  

   

     //第二种读取方式,通过字符数组进行读取  

     public static void arrayCharReader()  

     {  

         FileReader fr=null;  

         char[] arr=new char[1024];//定义一个字符数组,用于临时存储读取的字符  

         try  

.         {  

             //读取一个.java文件,并打印在控制台上。  

             fr=new FileReader("FileReaderDemo.java");  

             for (int len=0;(len=fr.read(arr))!=-1 ; )  

             {  

                 //显示字符数组的字符个数  

                 System.out.print(new String(arr,0,len));  

             }  

         }  

         catch (IOException e)  

         {  

             throw new RuntimeException("读取失败");  

.         }  

         finally  

         {  

             if(fr!=null)  

                 try  

                 {  

                     fr.close();  

                 }  

                 catch (IOException e)  

                {  

                 }  

         }  

     }  

 }  

 (毕老师教学练习题)

import java.io.*;class  FileReaderDemo{ public static void main(String[] args)  { //第一种读取方式 singleCharReader(); //第二种读取方式 arrayCharReader(); }  //第一种读取方式,单个字符读取 public static void singleCharReader() { FileReader fr=null; try { fr=new FileReader("demo.txt");//读取文件位置和文件名 for (int ch=0;(ch=fr.read())!=-1 ; ) { System.out.print((char)ch); } } catch (IOException e) { throw new RuntimeException("读取失败"); } finally { try { if(fr!=null) fr.close();//关闭读取流资源 } catch (IOException e) { } } }  //第二种读取方式,通过字符数组进行读取 public static void arrayCharReader() { FileReader fr=null; char[] arr=new char[1024];//定义一个字符数组,用于临时存储读取的字符 try { //读取一个.java文件,并打印在控制台上。 fr=new FileReader("FileReaderDemo.java"); for (int len=0;(len=fr.read(arr))!=-1 ; ) { //显示字符数组的字符个数 System.out.print(new String(arr,0,len)); } } catch (IOException e) { throw new RuntimeException("读取失败"); } finally { if(fr!=null) try { fr.close(); } catch (IOException e) { } } }}

()

 /* 

需求: 

 c盘一个文本文件复制到e盘、 

 复制的原理: 

 其实就是将c盘下的文件数据存储到e盘的一个文件中。 

 步骤: 

 1、在e盘创建一个文件。用于存储c盘文件中的数据。 

 2、定义读取流和c盘文件关联。 

 3、通过不断的读写完成数据存储。 

 4、关闭资源。 

 */  

 import java.io.*;  

    

 class ReaderWriterTest  

 {  

        publicstatic void main(String[] args)   

        {  

               //调用复制方法  

               //copy_1();  

               copy_2();  

        }  

        //用第一种读取方式进行复制  

        publicstatic void copy_1()  

        {  

               FileWriterfw=null;  .               FileReaderfr=null;  

               try  

               {  

                      //关联读取和写入的文件  

                      fw=newFileWriter("E:\\HelloWorld.java");  

                      fr=newFileReader("C:\\HelloWorld.java");  

                      for(int ch=0;(ch=fr.read())!=-1 ; )  

                      {  

                             fw.write(ch);//一个字符一个字符写入  

                      }  

               }  

               catch(IOException e)  

               {  

                      thrownew RuntimeException("读写失败");  

.               }  

               finally  

               {  

                      if(fr!=null)  

                             try  

                             {  

                                    fr.close();//对读取流和写入流分别关闭  

                             }  

                             catch(IOException e)                             

                              {                    }  

                      if(fw!=null)  

                             try  

                             {  

                                    fw.close();  

                             }  

                             catch(IOException e)  

                             {  

                             }  

               }  

        }  

    

        //第二种读取方式进行复制  

        publicstatic void copy_2()  

        {  

               FileWriterfw=null;  

               FileReaderfr=null;  

               try  

               {  

                      //关联读取和写入的文件  

                      fw=newFileWriter("E:\\HelloWorld.java");  

                      fr=newFileReader("C:\\HelloWorld.java");  

                      char[]arr=new char[1024];  

                      for(int len=0;(len=fr.read(arr))!=-1 ; )  

                      {  

                             fw.write(arr,0,len);//利用数组一次存入数组中的字符  

                      }  

               }  

               catch(IOException e)  

               {  

                      thrownew RuntimeException("读写失败");  

               }  

               finally  

               {  

                             try  

                             {  

                                    if(fr!=null)  

                                           fr.close();  

                             }  

                             catch(IOException e)  

                             {  

                             }  

                             finally  

                            {  

                                    if(fw!=null)  

                                           try  

                                           {  

                                                  fw.close();  

                                           }  

                                           catch(IOException e)  

                                           {  

                                           }  

                             }       

.               }  

        }  

 }  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值