JavaIO——字节流

字节流
  字节流:InputStream、OutputStream   
  字符流:Reader、Writer
  本质区别:字节流是原生的操作,而字符流是经过处理后的操作。
  基本操作流程:
      1. 根据文件路径创建File类对象 ; 
      2. 根据字节流或字符流的子类实例化父类对象 ;
      3. 进行数据的读取或写入操作
      4. 关闭流(close())。
  字节输出流:(outputStream 抽象类)
     实现两大接口:Closeable,Flushable两个接口
     具体方法:
        字节数组内容全部输出:output.write (byte b[]);;
        将部分字节数组内容输出:output.write(byte b[],int off,int len)
        输出单个字节:output.write(int b);
        抽象类父类想要实例化对象,必须需要子类,如果进行文件操作,特别是需要文件叠加或覆盖时:
        1. 接收File类(覆盖):public FileOutputStream(File file) throws FileNotFoundException
        2. 接收File类(追加):public FileOutputStream(File file, boolean append)

         遵循四步走:file对象,流的实例化、数据的读写、关闭流
         File file = new File(File.separator + "Users" + File.separator + "yuisama" + File.separator + "Desktop"  + File.separator + "hello.txt");   
         if (!file.getParentFile().exists()) 
         { // 必须保证父目录存在 ,创建多级父目录 
              file.getParentFile().mkdirs() ; 
         }     
         // OutputStream是一个抽象类,所以需要通过子类进行实例化,此时只能操作File类      
         OutputStream output = new FileOutputStream(file) ;        
         // 要求输出到文件的内容      
         String msg = "Java公开课" ;        
         // 将内容变为字节数组   
         output.write(msg.getBytes());     
         // 关闭输出    
         output.close();
         AutoCloseable接口支持自动关闭(一般不使用)
  字节输入流:(InputStream )
     实现了Closeable接口;
     具体方法:
         读取数据到字节数组中,返回数据的读取个数:in.read(byte b[]);
         (数据个数(字节数组大于数据)、字节数组大小(字节数组小于)、-1(没有数据还在读取))
         读取部分数据到字节数组中,每次只读取传递数组的部分内容:in.read(byte[],int off,int len )
         (读取满了就返回长度len ,没有取满返回数据个数,没有数据-1)——汤勺与汤
         读取单个字节,每次读取一个字节的内容,直到没有数据了返回-1:in.read();
               // 1.定义文件路径      
               File file = new File(File.separator + "Users" + File.separator + "ma" + File.separator + "Desktop"+ File.separator + "hello.txt");
               // 2.必须保证文件存在才能进行处理      
               if (file.exists()) {          
               InputStream input = new FileInputStream(file) ;  
               byte[] data = new byte[1024] ; 
               // 每次可以读取的大数量        
               int len = input.read(data) ;
               // 此时的数据读取到了数组之中  
               String result = new String(data,0,len) ; 
               // 将字节数组转为String            
               System.out.println("读取内容【"+result+"】") ;
               //关闭
               input.close(); 
               }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值