java的stream让我灵光一现

说实话,我是一个到了退役也没有搞明白C++的istream和ostream的。

刚开始的时候我把直接拆解成ios和tream

在这里插入图片描述

真,果粉暴露

退役之后划水,倒是从java当中发现了Stream的奥秘。

说点题外话,很多人喜欢评价一个语言难不难。

其实这种说法本身就非常的外行。

语言似乎没有什么难不难之分,一个平常的io或者是其他的基本运算真的也就算是学会这个语言了。

但是真正考验人的是那些库的使用,或者在python里面叫做模块,java当中的api

但是又话说回来,如果真的要说一下哪个语言很难的话,我认为这个位置应该让给java

在这里插入图片描述

扫描二维码关注公众号,回复: 14474894 查看本文章

作为一位鲁莽的C++人,开始撸Java的代码的时候上来就是

public class xin
然后文件名是个j.java,当场暴毙。

或者是终端指令上面写

java Main.class
JVM:你礼貌吗?

但是一个令oi人发指的一个问题出现了。

这玩意TM怎么输入???

这时候,一个很迷很迷的操作就出现了

Scanner scan = new Scanner(System.in)

一个标准输入的Scanner就写好了。。。

为啥要这样,我也不知道

当我开始沾沾自喜的时候,java又给我当头一棒

这玩意文件TM怎么输入???

我靠,怎么办。

此时,我有一个大胆的想法。

把System.in改成File.in

APJfengc:你礼貌吗???

然后就发现了今天要说的正题。

FileInputStream

这个东西是由InputStream这个类继承(就忽略Object类了)过来的,改写了read()

这时候我就整个懵逼了,InputStream到底是个什么玩意。

这让我想到了我之前写快读模板的时候的xin_stream,这显然是个盗版玩意儿。。。

又让我想到了某个人的书上的高精度模板。

里面的一句话

istream operator
oh,豁然开朗。

然而怎么用,在我家的32bit远古电脑的加持下,intellij根本下载不了,所以piao了个gitpod先用着。

自动补全~~~

在我的理解里面,InputStream实际上就是JVM和文件或者标准输入建立了一个桥梁,之后我们再去想要输入的的话就直接请求Stream。

所以原来这个就是流

所以延伸一下,FileOutputStream就是输出流了呗。

好了,你学会了1+1=2了,我们来实战一下。

所以我们写个爬虫

import java.io.;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.
;
public class xin
{
public static void main(String[] args) throws IOException,Exception
{
URL url = new URL(“”);

    HttpURLConnection con = (HttpURLConnection)url.openConnection();

    final int sec = 1000;
    con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36");
    con.setReadTimeout(sec * 10);
    con.connect();

    InputStream is = con.getInputStream();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    int maxn = 1024 * 10,len = 0;
    byte[] buf = new byte[maxn];

    while((len = is.read(buf)) != -1)
    {
        System.out.print(String.format("Get the mem of [ %3d MB ] [ %5d KB ]\n",len / 1024,len));
        baos.write(buf, 0, len);
    }


    File filename = new File("pic.jpg");

    FileOutputStream os = new FileOutputStream(filename);
    os.write(baos.toByteArray());

    os.close();
}

}
后来渐渐明白了之后,我发现,java的库也就是api是真的丰富。

加起来比小日子总人数还多。

里面还有很多很多开发者的api。

猜你喜欢

转载自blog.csdn.net/weixin_43214644/article/details/126317670