java流的主要方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java流的主要方法相关的知识,希望对你有一定的参考价值。
请详细说下
Java的流操作分为字节流和字符流两种。1、 字节流
所有的读操作都继承自一个公共超类java.io.InputStream类。
所有的写操作都继承自一个公共超类java.io.OutputStream类。
InputStream和OutputStream都是抽象类。
InputStream有6个低级输入流:
低级流
流的用途
ByteArrayInputStream
从内存数组中读取数据字节
FileInputStream
从本地文件系统中读取数据字节
PipedInputStream
从线程管道中读取数据字节
StringBufferInputStream
从字符串中读取数据字节
SequenceInputStream
从两个或多个低级流中读取数据字节,当到达流的末尾时从一个流转到另一个流
System.in
从用户控制台读取数据字节
InputStream还有一个子类:过滤器流java.io.FilterInputStream。过滤器流即能把基本流包裹起来,提供更多方便的用法。
FilterInputStream 类的构造方法为FilterInputStream(InputStream),在指定的输入流之上,创建一个输入流过滤器。
过滤器输入流
流的用途
BufferedInputStream
缓冲区对数据的访问,以提高效率
DataInputStream
从输入流中读取基本数据类型,如int、float、double或者甚至一行文本
LineNumberInputStream
在翻译行结束符的基础上,维护一个计数器,该计数器表明正在读取的是哪一行。
PushbackInputStream
允许把数据字节向后推到流的首部
2、 字符流
注:是在jdk1.1里面引进的,上面字节流是在jdk1.0引进的。当用于处理文本数据时,选择字符流比字节流更好。但对只出路基本数据类型的开发者,可以继续使用字节流。
所有的读操作都继承自一个公共超类java.io.Reader类。
所有的写操作都继承自一个公共超类java.io.Writer类。
同样Reader和Writer也是抽象类。
Reader的常用的子类如下:
低级读取器
流的用途
CharArrayReader
从字符数组中读取数据
InputStreamReader
FileReader(InputStreamReader的子类)
从本地文件系统中读取字符序列
StringReader
从字符串中读取字符序列
PipedReader
从线程管道中读取字符序列
InputStreamReader重点讲解:
InputStreamReader是从输入流中读取数据,连接输入流于读取器。如:
new InputStreamReader(System.in)
构造方法:
InputStreamReader(InputStream)
用缺省的字符编码方式,创建一个 InputStreamReader。
InputStreamReader(InputStream, String) 用已命名的字符编码方式,创建一个 InputStreamReader。 常用的过滤器读取器:
过滤器读取器
流的用途
BufferedReader
缓冲数据的访问,以提高效率
LineNumberReader(BufferedReader的子类)
维护一个计数器,该计数器表明正在读取的是哪一行。
FilterReader(抽象类)
提供一个类创建过滤器时可以扩展这个类
PushbackReader(FilterReader的子类)
允许把文本数据推回到读取器的流中
这些过滤器读取器都可以传入一个Reader作为构造方法的参数。 参考技术A 方法太多了。
去查查API什么都有了. 参考技术B 看api啊
主要read,write,flush,close等 参考技术C 这个问题我觉得还是看API比较好 里面的都有 而且里面的用法和相互之间的关系都讲的很清楚
Java 创建流的10种方法
用 Java 创建流的10种方法
Java 8 中引入的流 API ,用于处理对象的集合。Stream 是一个对象序列,它支持许多不同的方法,这些方法可以通过管道排列来产生所需的结果。
Java 流的特点是–
- 流不是数据结构,而是从集合、数组或输入/输出通道获取输入。
- 流不改变原始数据结构,它们只提供流水线方法的结果。
- 每个中间操作都被延迟执行,并返回一个流,因此各种中间操作都可以用管道连接。终端操作标记流的结尾并返回结果。
1.Using Collection
进场:
- 获取收藏
- 使用 Collection.stream()方法从集合中构造一个顺序流
- 打印流
public void getStream01()
ArrayList<Object> list = new ArrayList<>();
list.add("Geeks");
list.add("for");
list.add("Geeks");
Stream<Object> stream = list.stream();
Iterator<Object> iterator = stream.iterator();
while (iterator.hasNext())
System.out.println(iterator.next() + " ");
Output:
Geeks for Geeks
2.Create a stream from specified values
Stream.of(T…t) 方法可用于创建具有指定 T 值的流,其中 T 是元素。这个方法返回一个包含 t 个元素的顺序流。
public void getStream02()
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9);
stream.forEach(s -> System.out.println(s + " "));
Output:
1 2 3 4 5 6 7 8 9
3.Create stream from an array:
()流和数组流是从指定数组创建顺序流的两种常用方法。当用非基元类型的整数数组调用时,这两个方法都返回一个流
3.1Create stream using Arrays.stream()
public void getStream03()
String[] arr = new String[] "a", "b", "c" ;
Stream<String> stream = Arrays.stream(arr);
Iterator<String> iterator = stream.iterator();
while (iterator.hasNext())
System.out.println(iterator.next() + " ");
Output:
a b c
3.2 Create stream using Stream.of() A non interfering action to be perform on elements as they are consumed from the stream and returns also a new stream.
public void getStream04()
String[] arr = new String[] "a", "b", "c" ;
Stream<String> stream = Stream.of(arr);
Iterator<String> iterator = stream.iterator();
while (iterator.hasNext())
System.out.println(iterator.next() + " ");
Output:
a b c
4.Create an empty stream using Stream.empty()
空()方法在创建时使用,以避免为没有元素的流返回 null。
public void getStream05()
Stream<Object> stream = Stream.empty();
Iterator<Object> iterator = stream.iterator();
while (iterator.hasNext())
System.out.println(iterator.next() + " ");
5.Create a Stream using Stream.builder()
当应该在语句的右边部分另外指定所需的类型时,使用 builder()方法,否则 build()方法将创建流的实例。
public void getStream06()
Builder<Object> builder = Stream.builder();
Stream<Object> stream = builder.add("a").add("b").add("c").build();
Iterator<Object> iterator = stream.iterator();
while (iterator.hasNext())
System.out.println(iterator.next() + " ");
Output:
a b c
6.Create an infinite Stream using Stream.iterate()
iterate()方法返回一个无限顺序有序流,该流是通过对初始元素种子迭代应用函数 f 而产生的。在下面的示例中,结果流的第一个元素是迭代方法的第一个参数。为了创建每一个后续元素,该函数应用于前一个元素。在下面的例子中,第二个元素是 4
public void getStream07()
int seedValue = 2;
int limitTerms = 5;
Stream.iterate(seedValue, (Integer n) -> n * n).limit(limitTerms).forEach(System.out::println);
Output:
2 4 16 256 65536
7.Create an infinite Stream using Stream.generate() method
generate()方法接受一个供应商来生成元素,生成的流是无限的。因此,要限制它,请指定所需的大小,否则 generate()方法将一直工作,直到达到内存限制。
public void getStream08()
int limitTerms = 5;
Stream.generate(Math::random).limit(limitTerms).forEach(System.out::println);
Output:
0.2293502475696314 0.5650334795948209 0.3418138293253522 0.36831074763500116 0.4864408670097241
8.Create stream from a Pattern using Predicate
在 java 8 中,Pattern 的谓词 asPredicate()方法创建了一个用于模式匹配的谓词布尔值函数。
public void getStream09()
Pattern pattern = Pattern.compile("^G");
List<String> list = Arrays.asList("Geeks", "For", "Geek", "GeeksForGeeks", "A Computer Portal");
list.stream().filter(pattern.asPredicate()).forEach(System.out::println);
Oupput
Geeks Geek GeeksForGeeks
以上是关于java流的主要方法的主要内容,如果未能解决你的问题,请参考以下文章