当前位置 博文首页 > 白徽的博客:java I/O流 的秘密 字节文件读写核心算法

    白徽的博客:java I/O流 的秘密 字节文件读写核心算法

    作者:[db:作者] 时间:2021-07-30 20:57

    直接放代码:
    边打边学
    可能引起你的恐惧的代码那里已经标记好。最下面已经给你解释好了那段标记的代码。恐惧了就看一下解释。激励一下自己。
    **这里写了两个类,分别放在不同的文件里面。

    /**
     *文件输入输出处理程序, 字符编码由charset给出                    
     *文件类型:键盘、CRT、磁盘文本文件、网络文本文件....          ,            
     */
    package cn.edu.dlnu;  
    import java.io.*;
    import java.net.*; 
    public class IOFileCopyDemo {
        public static void main(String[] args) throws IOException{  
            InputStream in=null;
            OutputStream out=null;  
            /**
            // 1-- 磁盘文件 to  磁盘文件         
            in=new FileInputStream("src.txt");
            out=new FileOutputStream("dest.txt");
           */
           /**
           // 2 -- 键盘 to 磁盘文件 
           //恐惧点1     
            in=System.in;
            out=new FileOutputStream("dest.txt");
           */
          /**
            //3-- 磁盘文件 to    标准输出文件         
            //恐惧点2
            in=new FileInputStream("src.txt");
            out=System.out;
          
           /**
           // 4--   键盘 to   标准输出文件         
              in=System.in;
              out=System.out;
          */
          /**    
            //5 -- 网络文件 to    磁盘文件        
            URL url=new URL("https://www.sina.com.cn/");
             in=url.openStream(); 
             out=new FileOutputStream("dest.txt");
       */  
       /**
            //6 -- 网络文件 to   标准输出文件 
            //梦魇           
             URL url=new URL(" https://www.sina.com.cn/");
             in=url.openStream();  
             out=System.out;  
        */
              
              // 文件读写标准算法       
              IO.dump(in, out);
              
             System.out.println("File copy结束~~ "); 
        }
    }
     
    
    import java.io.*;  
    public class IO { 
      public static void dump(InputStream src,OutputStream dest)
                                             throws IOException {  
              int b=-1;  
              while(true){ 
              	  b=src.read(); 			
             	  if(b==-1) break; 
                  dest.write(b); 
                  dest.flush(); 
             }  
             src.close();
             dest.close(); 
      	}
    }
     
    

    恐惧1

    in = System.in;//Ctrl + z 结束
    

    可以在使用它的地方用 System.in 代替 in 。直接使用。你可以直接认为就是别名了。不会影响你的使用。当然了真正的原理需要你自己去搜索了。
    别忘了从键盘输入退出的时候需要Ctrl + z 结束。

    恐惧2

    out = System.out;
    

    跟恐惧1一样的答案。别怕,直接就是别名。

    梦魇

    		URL url = new URL("https://www.sina.com.cn/");
    		in = url.openStream();
    

    什么是URL?
    就是网址。所以他是下载了该网址的HTML。在网页上鼠标右键选择审查元素即可看到该网站的HTML。
    悄悄告诉你爬虫扒数据也是这么干的哦。是不是觉得自己的眼界突然就提升了!
    所以这段代码就是把网站的信息给你扒了下来。第一行代码说的是:把我要扒的网站的地址给赋值给 url 变量。
    然后第二行:输入流是这个 url 的HTML。

    cs