📜  java 流和过滤器 - Java (1)

📅  最后修改于: 2023-12-03 15:01:34.306000             🧑  作者: Mango

Java 流和过滤器

什么是Java流?

Java流是一种连接到数据源或目标的抽象概念。流与数据源或目标之间建立了一个管道,数据可以从源中流入管道,从管道中流出并进入目标。Java流包括输入流和输出流两种类型。

输入流

输入流从数据源中读取数据,并将其存储在内存中。Java中,输入流通常使用InputStream类表示,而派生类包括FileInputStream、ByteArrayInputStream、StringBufferInputStream等。

以下是读取文件的示例:

File file = new File("file.txt");
InputStream inputStream = new FileInputStream(file);

byte[] buffer = new byte[1024];

int length = 0;

while ((length = inputStream.read(buffer)) != -1) {
    String result = new String(buffer, 0, length);
    System.out.println(result);
}
输出流

输出流将内存中的数据写入目标中。Java中,输出流通常使用OutputStream类表示,而派生类包括FileOutputStream、ByteArrayOutputStream、StringBufferOutputStream等。

以下是写入文件的示例:

File file = new File("output.txt");
OutputStream outputStream = new FileOutputStream(file);

String data = "Java 流和过滤器";
outputStream.write(data.getBytes());
outputStream.flush();
outputStream.close();
过滤器

Java过滤器是通过转换或筛选流中数据的处理程序。它们是流式API的另一种扩展。Java中,过滤器通常使用FilterInputStream和FilterOutputStream类表示。

以下是过滤器的示例:

File file = new File("input.txt");
InputStream inputStream = new FileInputStream(file);
int data = inputStream.read();
while(data != -1) {
    char c = (char) data;
    System.out.println(c);
    data = inputStream.read();
}

inputStream.close();
管道流

Java管道流是一种连接输入流和输出流的方法。它使用PipedInputStream和PipedOutputStream类表示。

以下是管道流的示例:

final PipedOutputStream output = new PipedOutputStream();
final PipedInputStream input = new PipedInputStream(output);

Thread writer = new Thread(new Runnable() {
    public void run() {
        try {
            output.write("Java 流和过滤器".getBytes());
            output.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
});

Thread reader = new Thread(new Runnable() {
    public void run() {
        try {
            int data = input.read();
            while (data != -1) {
                char c = (char) data;
                System.out.print(c);
                data = input.read();
            }
            input.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
});

writer.start();
reader.start();
总结

Java流和过滤器是处理文件输入输出的重要API。使用流和过滤器可以轻松读取和写入文件,并对流传输的数据进行过滤和处理。