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

刚开始的时候我把<iostream>直接拆解成iostream

真,果粉暴露

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

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

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

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

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

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

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

public class xin

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

或者是终端指令上面写

java Main.class

JVM:你礼貌吗?

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

\(\huge{\text{这玩意TM怎么输入???}}\)

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

Scanner scan = new Scanner(System.in)

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

为啥要这样,我也不知道

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

\(\huge{\text{这玩意文件TM怎么输入???}}\)

我靠,怎么办。

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

System.in改成File.in

APJfengc:你礼貌吗???

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

FileInputStream

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

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

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

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

里面的一句话

istream operator

oh,豁然开朗。

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

自动补全~~~

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

所以原来这个就是\(\huge{\text{流}}\)

所以延伸一下,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

如果想要使用再学习个maven就行了。

所以你秃顶了没?

java的stream让我灵光一现的更多相关文章

  1. Java 8 Stream API详解--转

    原文地址:http://blog.csdn.net/chszs/article/details/47038607 Java 8 Stream API详解 一.Stream API介绍 Java8引入了 ...

  2. java之stream(jdk8)

    一.stream介绍 参考: Java 8 中的 Streams API 详解   Package java.util.stream   Java8初体验(二)Stream语法详解   二.例子 im ...

  3. Java 8 Stream API Example Tutorial

    Stream API Overview Before we look into Java 8 Stream API Examples, let’s see why it was required. S ...

  4. Java笔记:Java 流(Stream)、文件(File)和IO

    更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的 ...

  5. Java 8 Stream

    1.关于Java8部分新特性介绍 Java8的新特性很多,在此就不一一介绍了,这里只说一下我自己在工作用用得比较多的几点: 1.1.Lambda表达式 Lambda允许把函数作为一个方法的参数(函数作 ...

  6. [零]java8 函数式编程入门官方文档中文版 java.util.stream 中文版 流处理的相关概念

    前言 本文为java.util.stream 包文档的译文 极其个别部分可能为了更好理解,陈述略有改动,与原文几乎一致 原文可参考在线API文档 https://docs.oracle.com/jav ...

  7. java 11 Stream 加强

    Stream 是 Java 8 中的新特性,Java 9 开始对 Stream 增加了以下 4 个新方法. 1) 增加单个参数构造方法,可为null Stream.ofNullable(null).c ...

  8. Java 8 新特性-菜鸟教程 (5) -Java 8 Stream

    Java 8 Stream Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种 ...

  9. 关于java中Stream理解

    关于java中Stream理解 Stream是什么 Stream:Java 8新增的接口,Stream可以认为是一个高级版本的Iterator.它代表着数据流,流中的数据元素的数量可以是有限的, 也可 ...

随机推荐

  1. 从头创建一个新的vue项目------用npm|yarn下载vue-cli|vue-ui创建vue

    1.下载node或者是nvm node可以直接去node官网下载,http://nodejs.cn/,默认是长期维护的版本 如果想管理node的版本,可以下载nvm.这个是可选的.但是作为一个前端工程 ...

  2. vue 的个人学习小笔记

    一.vite2.0+vue3.0+ts 创建.配置 个人公众号文章地址 个人github仓库地址 1.Vite 创建 vue3 项目: 1.1.npm 常用命令 1.npm 查看版本号 npm vie ...

  3. python3在使用类基础时,遇到错误TypeError: module.**init**() takes at most 2 arguments (3 given)

    python3在使用类基础时,遇到错误TypeError: module.init() takes at most 2 arguments (3 given) 1.原因:直接导入的py文件,而没有导入 ...

  4. 用OpenMV自动识别颜色序列

    目录 用OpenMV自动识别颜色序列 用OpenMV自动识别颜色序列 新年假期过去啦~ 主控:OpenMV3 M7摄像头(STM32F765) IDE:OPENMV官方IDE 我将Capstone期间 ...

  5. 用C语言实现井字棋(人人/AI人机)--完结版

    目录 用C语言实现井字棋(人人/AI人机)--完结版 BUG与优化3: 1. 修改了step的计算方法,每个玩家玩完就加一次step 2. 改变了电脑下棋的逻辑,每个玩家玩完之后都跳过这次循环 源码: ...

  6. Web自动化定位方法以及常用便捷操作

    很遗憾现在才开始给大家逐步分享自动化教程,原本计划着将现有的接口以及app.pc网页端进行自动化处理后再逐步给大家好好分享一下,由于当前实在没必要自动化操作了,所以临时用脑海中的知识再为大家继续更一篇 ...

  7. Linux 装完后没有声音的解决办法

    备注:1)Ubuntu Desktop版本:16.042)Linux工作用户:root1. 临时方法在终端中执行命令:pulseaudio --start --log-target=syslog2. ...

  8. 28.MysQL的日志管理及备份与恢复

    MySQL 索引.事务与存储引擎 目录 MySQL 索引.事务与存储引擎 MySQL 索引 索引的概念 索引的作用及副作用 索引的作用 索引的副作用 创建索引的原则依据 索引的分类和创建 普通索引 唯 ...

  9. Torch的索引与形变

    >>> a = torch.Tensor([[1,2],[3,4]])>>> atensor([[1., 2.], [3., 4.]])>>> a ...

  10. BUUCTF-隐藏的钥匙

    隐藏的钥匙 通过16进制打开发现flag,其中告知编码为base64,解密后加上flag{}即可 flag{377cbadda1eca2f2f73d36277781f00a}