欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > Java 流(Stream)、文件(File)和IO详解

Java 流(Stream)、文件(File)和IO详解

2025/2/23 1:13:32 来源:https://blog.csdn.net/2401_85606134/article/details/139845380  浏览:    关键词:Java 流(Stream)、文件(File)和IO详解

Java中,流(Stream)、文件(File)和输入输出(IO)操作是非常重要的内容。这些功能用于处理数据的读取、写入以及流式处理。本文将详细介绍Java中流、文件和IO的使用方法,包括代码示例和应用场景。

一、Java流(Stream)

Java 8引入了Stream API,用于处理集合数据。Stream是一种可以执行一系列操作(如过滤、映射、减少等)以处理数据的抽象。

1.1 创建Stream

可以从集合、数组、生成器等创建Stream。

示例:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;public class StreamExample {public static void main(String[] args) {// 从集合创建StreamList<String> list = Arrays.asList("a", "b", "c");Stream<String> stream1 = list.stream();// 从数组创建StreamString[] array = {"x", "y", "z"};Stream<String> stream2 = Arrays.stream(array);// 使用Stream.of创建StreamStream<String> stream3 = Stream.of("1", "2", "3");}
}

1.2 常见操作

Stream支持多种操作,如过滤(filter)、映射(map)、归约(reduce)等。

示例:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;public class StreamOperationsExample {public static void main(String[] args) {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);// 过滤偶数List<Integer> evenNumbers = numbers.stream().filter(n -> n % 2 == 0).collect(Collectors.toList());System.out.println("Even numbers: " + evenNumbers);// 将数字平方List<Integer> squaredNumbers = numbers.stream().map(n -> n * n).collect(Collectors.toList());System.out.println("Squared numbers: " + squaredNumbers);// 计算总和int sum = numbers.stream().reduce(0, Integer::sum);System.out.println("Sum: " + sum);}
}

二、Java文件操作(File)

Java的java.io.File类用于表示文件和目录路径名。可以使用File类创建、删除、检查文件和目录的属性等。

2.1 创建文件和目录

示例:

import java.io.File;
import java.io.IOException;public class FileExample {public static void main(String[] args) {try {// 创建文件File file = new File("example.txt");if (file.createNewFile()) {System.out.println("File created: " + file.getName());} else {System.out.println("File already exists.");}// 创建目录File directory = new File("exampleDir");if (directory.mkdir()) {System.out.println("Directory created: " + directory.getName());} else {System.out.println("Directory already exists.");}} catch (IOException e) {System.out.println("An error occurred.");e.printStackTrace();}}
}

2.2 读取和写入文件

可以使用FileReaderFileWriter类来读取和写入文件。

示例:

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class FileReadWriteExample {public static void main(String[] args) {try {// 写入文件FileWriter writer = new FileWriter("example.txt");writer.write("Hello, World!");writer.close();// 读取文件FileReader reader = new FileReader("example.txt");int character;while ((character = reader.read()) != -1) {System.out.print((char) character);}reader.close();} catch (IOException e) {System.out.println("An error occurred.");e.printStackTrace();}}
}

三、Java IO(输入输出)

Java IO库提供了多种输入输出流类,用于处理字节和字符数据。主要分为字节流和字符流两类。

3.1 字节流

字节流用于处理8位字节数据,主要的类是InputStreamOutputStream及其子类。

3.1.1 FileInputStream和FileOutputStream

示例:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class ByteStreamExample {public static void main(String[] args) {try {// 写入字节文件FileOutputStream fos = new FileOutputStream("byteFile.txt");String data = "Hello, Byte Stream!";fos.write(data.getBytes());fos.close();// 读取字节文件FileInputStream fis = new FileInputStream("byteFile.txt");int byteData;while ((byteData = fis.read()) != -1) {System.out.print((char) byteData);}fis.close();} catch (IOException e) {System.out.println("An error occurred.");e.printStackTrace();}}
}

3.2 字符流

字符流用于处理16位字符数据,主要的类是ReaderWriter及其子类。

3.2.1 FileReader和FileWriter

示例:

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class CharStreamExample {public static void main(String[] args) {try {// 写入字符文件FileWriter writer = new FileWriter("charFile.txt");writer.write("Hello, Character Stream!");writer.close();// 读取字符文件FileReader reader = new FileReader("charFile.txt");int charData;while ((charData = reader.read()) != -1) {System.out.print((char) charData);}reader.close();} catch (IOException e) {System.out.println("An error occurred.");e.printStackTrace();}}
}

四、综合应用示例

在实际应用中,可能会综合使用文件操作和流来处理复杂的数据。下面是一个示例,展示如何读取一个文件的内容并通过流进行处理。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;public class FileStreamExample {public static void main(String[] args) {try (BufferedReader br = new BufferedReader(new FileReader("data.txt"))) {List<String> lines = br.lines().collect(Collectors.toList());List<String> filteredLines = lines.stream().filter(line -> line.contains("keyword")).collect(Collectors.toList());filteredLines.forEach(System.out::println);} catch (IOException e) {System.out.println("An error occurred.");e.printStackTrace();}}
}

五、总结

本文详细介绍了Java中的流(Stream)、文件(File)和IO操作,涵盖了基本概念、常用操作和示例代码。掌握这些知识对于处理数据、文件读写以及流式数据处理非常重要。希望这篇文章对你理解和应用Java的流、文件和IO有所帮助。如果你有任何问题或建议,欢迎在评论区讨论。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词