❶ java中如何将file类型转换为inputstream类型啊刚学java,纠结啊~
你应该问的是 为 file类构造一个节点流来输出或输入吧,
File file = new File("D:/zj.txt");
InputStream is = new FileInputStream(file)
is就可以从该file里读取数据了,
int length = 0;
byte[] b = new byte[200];
while(-1 != ( length = is.read(b[200]) )
{
System.out.print(new String(b, 0, length));
}
is.close();
这是标准的从file里以字节流读取的模板
建议自己去网络下Java IO,这是比较重要的知识点,理解节点流和过滤流的概念和所运用的装饰模式,才会运用自如。
参考下这个
http://blog.csdn.net/ilibaba/article/details/3955799
❷ Java Stream- 流式处理
Java Stream 流式处理是一种基于数据流的编程模型。以下是关于Java Stream流式处理的详细解答:
流概念:
- 流获取:从数据源获取流。
- 转换操作:对流中的元素进行一系列中间操作,如过滤、映射、排序等,这些操作可以链式调用,且可以多次执行。
- 终止操作:触发流的计算,并产生结果,如遍历、收集、匹配等,这些操作只能执行一次。
流类型:
- stream:单管道流,顺序处理数据。
- parallelStream:多管道并行流,利用多核CPU并行处理数据,底层使用ForkJoinPool实现。
- forEachOrdered:在并行流中强制有序处理元素,但效率较低。
函数式接口:
- Consumer:接受一个输入参数并且不返回结果的操作。
- Supplier:提供一个结果或者值,但不接受输入参数。
- Function:接受一个输入参数并产生一个结果。
- Predicate:表示一个参数的布尔值函数。
Lambda 表达式:
- 结构: > {代码语句},用于简化函数式接口的编写。
- 特点:延迟运行,即只有在实际需要时才执行Lambda表达式中的代码,这有助于提升性能。
流获取方式:
- Collection 子接口:如List、Set等,直接调用stream方法获取流。
- Map:不是Collection接口的子接口,需按Key、Value、Entry分别调用stream方法获取流。
- Array:使用Stream.of方法将数组转换为流。
转换操作:
- filter:过滤流中的元素,只保留满足条件的元素。
- map:将流中的元素转换为另一种类型的元素。
- flatMap:将流中的每个元素映射为流,并将这些流连接成一个流。
- distinct:去除流中的重复元素。
- sorted:对流中的元素进行排序。
- limit:截取流中的前n个元素。
- skip:跳过流中的前n个元素。
- peek:对流中的元素执行操作,但不改变流本身。
终止操作:
- forEach:遍历流中的每个元素,执行给定的操作。
- collect:将流中的元素收集到集合中,如List、Set、Map等。
- findFirst/findAny:查找流中的第一个或任意元素。
- allMatch/anyMatch/noneMatch:判断流中的所有、任意、无元素是否满足条件。
- count:统计流中的元素个数。
- max/min:获取流中的最大或最小元素。
- rece:将流中的元素组合起来,生成单个值。
- toArray:将流中的元素转换为数组。
- concat:将两个流合并为一个流。