流的操作

(流)

  • 流按照方向分,分为两种输入流和输出流,是以内存作为参照物。当从数据源中,将数据读取到内存中时,叫做输入流,也叫读取流将内存中的数据写入到数据源时,叫做输入流,也叫写入流
  • 流按照传输的内容分,分为:字节流,字符流,对象流。无论是哪一种流,底层部分都是以字节流方式传输。所以,基本质都是字节流,但是为了方便程序员更好的操作字符数据和对象数据,所以,在字节流基础上做了一层包装,形成了字符流和对象。
  • 字节流的父类是InputStream和OutStream,这两个类的字节流父类是Reader和Writer。
  • 流操作的意思就是完成内存数据和磁盘数据的转化
  • 流操作的步骤:1.建立流  2.操作流  3.关闭流
  • 流的操作如图下,写入流:
         
            

public class InputText {
     public void readDate() {
          InputStream in = null;
          try {
              //建立文件读取字节流
              in = new FileInputStream("d:/王也.jpeg");
//            int date = 0;
//            //read()一次读取一个字节,返回读取的数据,当返回值为-1时,表示文件读取完毕
//            while ((date = in.read()) != -1) {
//                 System.out.println(date);
//            }  
              //将流中的数据读取到字节数据组中,类似于一个每次只能装30吨的车运送90吨的东西需要4次
              //优点效率高
              byte[] by=new byte[1024];
              int len=0;
              while((len=in.read(by))!=-1){
                   System.out.println(len);
              }
          } catch (Exception e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          } finally {
              try {
                   // 关闭流
                   in.close();
              } catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
              }
          }
     }
    //写入流
    public void writeDate(String str){
          OutputStream out = null ;
          
           try {
               out = new FileOutputStream( "d:/1.txt",true );
               //out.write(98)
               out .write( str .getBytes());
          } catch (Exception e ) {
               // TODO Auto-generated catch block
               e .printStackTrace();
          } finally {
               try {
                    out .close();
              } catch (IOException e ) {
                    // TODO Auto-generated catch block
                    e .printStackTrace();
              }
          }
     }
    //拷贝
      public void copyFile(){
          InputStream in = null ;
          OutputStream ou = null ;
          
           try {
               in = new FileInputStream( "d:/王也.jpeg" );
               ou = new FileOutputStream( "e:/王也.jpeg" );
              
               byte [] by = new byte [1024];
               int len =0;
               while (( len = in .read( by ))!=-1){
                    ou .write( by ,0, len );
              }
          } catch (Exception e ) {
               // TODO Auto-generated catch block
               e .printStackTrace();
          } finally {
               try {
                    in .close();
                    ou .close();
              } catch (IOException e ) {
                    // TODO Auto-generated catch block
                    e .printStackTrace();
              }
              
          }
          
     }


      public static void main(String[] args ) {
          InputText inputText = new InputText();
           inputText .readDate();
          InputText in=new InputText();
           in .writeDate( "sbsbsbsb" );
            in.copyFile();


     }
}
  • 操作文件流时,如果文件不存在,那么读取流会抛出文件未找到的异常,而写入流,会创建新文件
    读取文件
package io;
import java.io.BufferedReader;
import java.io.FileNotFoundException ;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class ReaderTest {
      public void readDate(){
          Reader r = null ;
          BufferedReader br = null ;
          
           try {
               //建立文件读取流
               r = new FileReader( "d:/博客.txt" );
               //套接流.在一个流的基础上,再套接一个流.也称高级流
               br = new BufferedReader( r );
              String str = null ;
               while (( str = br .readLine())!= null ){
                   System. out .println( str );
              }
          } catch (Exception e ) {
               // TODO Auto-generated catch block
               e .printStackTrace();
          } finally {
               try {
                    r .close();
                    br .close();
              } catch (IOException e ) {
                    // TODO Auto-generated catch block
                    e .printStackTrace();
              }
              
          }
          
     }
      public static void main(String[] args ) {
          ReaderTest re = new ReaderTest();
           re .readDate();
     }
}





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值