InputStream
是 Java 中的一个抽象类,它主要用于从数据源(如文件、网络连接等)读取数据。在文件读写操作中,InputStream
的应用主要包括以下几个方面:
- 文件读取:使用
FileInputStream
类,它是InputStream
的子类,可以从文件中读取数据。通常与BufferedReader
或DataInputStream
结合使用,以便更高效地读取文本文件或二进制文件。
import java.io.*; public class ReadFileExample { public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("example.txt"); BufferedReader br = new BufferedReader(new InputStreamReader(fis)); String line; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); } catch (IOException e) { e.printStackTrace(); } } }
- 网络数据读取:当从网络连接(如 HTTP 请求)读取数据时,可以使用
InputStream
的子类,如URLConnection
类的getInputStream()
方法返回的InputStream
。
import java.io.*; import java.net.URL; import java.net.URLConnection; public class NetworkReadExample { public static void main(String[] args) { try { URL url = new URL("https://example.com"); URLConnection connection = url.openConnection(); InputStream inputStream = connection.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); } catch (IOException e) { e.printStackTrace(); } } }
- 资源文件读取:在 Java 项目中,可以使用类加载器从 JAR 文件或类路径中读取资源文件。这时,可以使用
ClassLoader
类的getResourceAsStream()
方法获取InputStream
。
import java.io.*; public class ResourceReadExample { public static void main(String[] args) { ClassLoader classLoader = ResourceReadExample.class.getClassLoader(); InputStream inputStream = classLoader.getResourceAsStream("resources/example.txt"); if (inputStream != null) { try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) { String line; while ((line = br.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } else { System.out.println("Resource file not found."); } } }
总之,InputStream
在文件读写操作中的应用非常广泛,可以用于读取文件、网络数据和资源文件。在实际开发中,根据不同的数据源选择合适的 InputStream
子类,并结合其他工具类(如 BufferedReader
、DataInputStream
等)进行高效的数据读取。