📅  最后修改于: 2023-12-03 15:01:34.306000             🧑  作者: Mango
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。使用流和过滤器可以轻松读取和写入文件,并对流传输的数据进行过滤和处理。