8.17笔记

复习{
  File的对文件夹的操作,对文件的操作;
  
  1.遍历文件夹
  2.删除文件夹(为null的文件夹,不为null的文件)
  
 递归方式来删除: 自己调用自己,针对方法
  注意 一定要设置方法方法的出口 ,return  
 
 
处理文件的I/O流:  可以完成对文件复制操作 
 FileInputStream: 读取文件的内容,byte[] b ,
      read();
      read(byte[] b);
      read(byte[] b , int off , int len);
      close();
 FileOutputStream:  在通过java程序通过字节流 将内存的数据写入到指定文件中
      write(int a );
      write(byte[] b);
      write(byte[] b, int off , int len);
      flush();
      close();
      
      new FileInputStream(new File("路径"));
      new FileOutputStream(new File("路径"));
      
 技巧: 搞清楚方向感     
      
     Java.net.URL;  
          URL url = new URL("https://sfsdfsdfsldfsdlfk"); 
           URLConnection c = url.openConnection();
           InputStream ips = c.getInputStream();
           
 序列化 和 反序列化: 
      什么是序列化 ?
         将java内存中的 对象数据 ,通过ObjectOutputStream 写入到物理文件中的
              过程,就是序列化
      什么是反序列化 ?
        将物理文件中的 数据,通过ObjectInputStream 读取到java内存中的过程
              就是反序列化;
               
ObjectOutputStream 序列化
     writeObject(Object obj); 
     flush();
     close();
     
ObjectInputStream 反序列化
     readObject();
     
 new ObjectOutputStream(new FileOutputStream(new File()));
 new ObjectInputStream(new FileInputStream(new File()));
 
 PipedInputStream  管道流
 PipedOutputStream  管道流
--------------------------------------------------------------------------------}
字符流:  操作的char类型 2字节
字节流:      操作的byte类型 1字节
  它们两个  就差在 数据类型上;
 
Reader: 抽象类
     字符流的输入流:
     
     方法: 
        read();
        read(char[] cbuf)
        read(char[] cbuf, int off, int len);
        skip(long n);
        close();
        
    常用子类: 
       |-- CharArrayReader
       |-- BufferedReader
       |-- InputStreamReader            
        
Writer: 抽象类
       字符流的输出流:
     
    方法:
        append(char c);  StringBuffer,StringBuilder中见过,字符的拼接
         close(); 
        flush();  
         write(char[] cbuf);  
         write(char[] cbuf, int off, int len) 
        write(int c);
***         write(String str); 
         write(String str, int off, int len);
 
  常用子类: 
入门级:      CharArrayWriter:
            BufferedWriter:
            OutputStreamWriter:
            PrintWriter:
-----------------------------------------------------------------------------------
BufferedReader:
     构造器: 
       new BufferedReader(Reader reader);
     
     方法:
       readLine();
       read();
       read(char[] cbuf, int off, int len) 
       skip();
       close();
       
BufferedWriter:
    
     构造器:
      new BufferedWriter(Writer writer);
         
      write(String str);
        newLine();
        write(int a);
        flush();
        close();
        
InputStreamReader:
      new InputStreamReader(InputStream ips);
          

OutputStreamWriter:   
      new OutputStreamWriter(OutputStream ops);
-----------------------------------------------------------------------------------------
PrintWriter:  打印流
  但是我们的输出语句中 用的 打印流 是 PrintStream 是字节流的
     
    构造方法: 
         PrintWriter(File file);
         PrintWriter(OutputStream out);      

        方法:
        close();
        flush();
三组:        
        print(...);  不换行打印
        
        println(...);     换行打印
          
        write(...);  写出

        append(...); 追加
==============================================================================================
高级流:  了解
    NIO: (Non-blocking I/O)非阻塞I/O       
          也叫(New-IO) 新IO 
          
要比 普通io 传输效率更高:
    java.nio.Buffer 
    三大核心: 
    Buffer: 缓冲区 抽象类
                |-- ByteBuffer , ShortBuffer, IntBuffer, LongBuffer, CharBuffer, FloatBuffer,DoubleBuffer
             
             以上7个类  不能new 对象
             
               方法:
             capacity(); 容量
             clear();清除
             flip(); 切换模式
             position(); 位置,存储到什么位置
             limit(); 这个缓冲区的最大存储容量
        
            ByteBuffer: 
                 allocate(int capacity);  非直接缓冲区   ---> 堆内  内能
                  allocateDirect(int capacity); 直接缓冲区 --->  堆外内存  效率高
          
    Channel: 通道
        通过FileInputStream();  FileOutputStream(); 获取通道
         
        FileChannel channel = getChannel();
    
         channel.read(buffer);  
         
         buffer.flip(); 缓冲区 必须自己切换一下 读写 模式 ,这样你的通道才能传输数据
                
         channel.writer(buffer);
    
    Selector: 选择器 , 监听器
          监听多个    Channel通道的
============================================================================================         

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值