java流处理总结(简明实用)

来源:互联网 发布:如何自己注册淘宝店铺 编辑:程序博客网 时间:2024/05/19 10:37

        流是一组有序的数据序列。所有输入输出流都放在java.io包中。所有输入流都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;所有输出流类都是抽象类OutputStream(字节输出流)或抽象类Writer(字符输出流)的子类。 

        Java中的字符都是Unicode编码,是双字节的。  

2.File类。在java.io包中。   ex: 
      File file=new File("D:/myfile","word.txt");        //实例化文件对象D:/myfile/word.txt,父路径为D:/myfile                      if(file.exists()&&!file.isDirectory())       //如果该文件存在且不是目录       { 

      System.out.println("file:"file.getName()+";length:"+file.length()+";isHidden:"+file.isHidden());            file.delete();  //删除文件对象     

  }else{ 

           file.createNewFile();                         //如果文件不存在,则创建该文件     

  }       

3.文件输入输出流。 
  <1.FileInputStream类与FileOutputStream类(针对字节流,读写汉字时有可能出现乱码。需要借助byte数组进行输入输出操作。)    ex: 
      File file =new File("D:/myfile","word.txt");       //实例化文件对象 
      FileOutputStream out=new FileOutputStream(file);   //实例化文件输出流,以文件对象为构造函数参数,该文件对象指定了输出目标 

       byte text[]="北京交通大学交通运输学院".getBytes(); //将String转换成byte数组     

       out.write(text);                                   //文件输出流将byte数组输出     

       out.close();                                       //关闭文件输出流     

      FileInputStream in=new FileInputStream(file); 
      byte txt[]=new txt[1024];                          //新建byte数组,用于存放文件输入流 

      int len=in.read(txt);                              //将文件输入流读入到byte数组txt中,并返回文件输入流的长度    

     System.out.println("text文件中的信息是:"+new String(txt,0,len));       in.close();      

         

  <2.FileReader类和FIleWriter类(针对字符流。不需要借助byte数组来操作,对于输入流借助char数组。)    ex: 
       FileWriter out=new FileWriter(new File("D:/myfile/word.txt"));       out.write("北京交通大学交通运输学院");       out.close();  
       FileReader in=new FileReader(new file("D:/myfile/word.txt")); 

       char txt[]=new char[1024];                         //对于字符流,新建char数组来存放文件输入流     

       int len=in.read(txt); 

      System.out.println("text文件中的信息是:"+new String(txt,0,len));     

      in.close();        


4.带缓存的输入输出流。缓存流为I/O流增加了内存缓冲区,是I/O的一种性能优化。BufferedInputStream与BufferedOutputStream

类/BufferedReader与BufferedWriter类    ex: 

      FileWriter fw=new FileWriter(new File("D:/myfile/word.txt")); 
      BufferedWriter bufw=new BufferedWriter(fw);      //实例化缓存输出流,以文件输出流为构造函数的参数,使文件输出流要输出的东西先放到缓存输出流中 

      bufw.write("北京交通大学交通运输学院");                           //将待输出内容放到缓存输出流中      

      bufw.newLine();                                                   //写入一个行分隔符 

      bufw.flush();                                                     //将缓存输出流中的内容立刻写入输出流中,即直接输出到D:/myfile/word.txt中 

      bufw.close();                                                     //先关闭缓存输出流,之后才能关闭文件输出流    

      fw.close();                                                       //关闭文件输出流  


      String s=null; 
      FileReader fr=new FileReader(new File("D:/myfile/word.txt")); 
      BufferedReader bufr=new BufferedReader(fr);                       //文件输入流要输入的东西先放到缓存输入流中                 while((s=bufr.readLine())!=null)                //读取一个文本行到s,读完一行后指针向下移动一行       { 
          System.out.println(s);                                        //输出每一行文本内容       } 

      bufr.close();                                                     //先关闭缓存输入流,之后才能关闭文件输入流     

      fr.close();                                                       //关闭文件输入流  


5.数据输入输出流。当读取一个数据时,不必再关心这个数值应当是什么字节。DataInputStream与DataOutputStream类。    ex: 
      FileOutputStream fos=new FileOutputStream("D:/word.txt");          //实例化文件输出流,直接以文件路径作为构造函数的参数 
      DataOutputStream ds=new DataOutputStream(fos);                     //实例化数据输出流,以文件输出流为构造函数的参数,指定了输出目标 
      ds.writeUTF("使用writeUTF()方法写入数据");                         //先将字符串按照UTF编码后的字节长度写入目标设备,然后才是每一个字节的UTF编码 
      ds.writeChars("使用writeChars()方法写入数据");                     //将字符串中的每一个字符的两个字节的内容都写到目标设备中 
      ds.writeBytes("使用writeBytes()方法写入数据");                     //只是将字符串中的每一个字符的低字节内容写入目标设备中 
      ds.close();fos.close();        

      FileInputStream fis=new FileInputStream("D:/word.txt");     

      DataInputStream dis=new DataInputStream(fis); 

      System.out.println(dis.readUTF());                                 //DataInputStream类只提供了readUTF()方法返回字符串 

      dis.close();fis.close();  


6.ZIP压缩输入输出流   <1.压缩文件 
   ex:                                                                                //将D:/word.txt压缩至D:/hello.zip/a/word.txt。 
      ZipOutputStream out=new ZipOutputStream(new FileOutputStream("D:/hello.zip"));  //实例化压缩文件类,以文件输出流为构造函数的参数,指定了压缩后的文件名为D:/hello.zip 
      out.putNextEntry(new ZipEntry("a/"));                                           //开始一个新的ZipEntry(压缩文件的进入点),将流内的位置移至此entry所指数据的开头 
      FileInputStream in=new FileInputStream("D:/word.txt");                          //实例化文件输入流,指定要压缩的文件 
      int b; 
      while((b=in.read())!=-1)                                                        //读取文件输入流的每一行并返回行号,若为最后一行则返回-1.       { 

          out.write(b);                                                               //将in读出的每一行写入当前ZIP条目中       }      

     in.close();  


  <2.解压文件    ex: 
      ZipInputStream in=new ZipInputStream(new FileInputStream("D:/hello.zip"));      //实例化对象,指定要解压文件为D:/hello.zip 
      ZipEntry entry;                                                                 //获取下一个ZipEntry,并将流内的位置移至该entry所指数据的开头 
      while(((entry=in.getNextEntry())!=null) && !entry.isDirectory())                //如果entry不为空,且不为目录       { 
         File file=new File(entry.getName()); 
         if(!file.exists())                                                           //若file存在,就不解压了          { 
              file.createNewFile();          } 

         in.closeEntry();       }  


注: 1. System.in表示用户输入的内容。

       ex:  BufferedReader line=new BufferedReader(new InputStreamReader(System.in)); 

  
参考http://zhidao.baidu.com/question/309936623.html 

原创粉丝点击