Java 输入流是 Java 编程语言中的一种流,它可以从源头(如文件、字节数组或其他输入源)读取数据。它是 Java 流体系统的基本部分,用于处理输入和输出。
Java 输入流可以分为两大类:字节流和字符流。字节流用于处理原始字节数据,而字符流用于处理文本数据。
Java 输入流的基本架构包含三个重要的部分:InputStream、Reader 和 InputStreamReader。InputStream 是 Java 中所有输入流的基类;Reader 是 Java 中所有字符输入流的基类;InputStreamReader 是一个适配器,它将 InputStream 转换成 Reader。
// 创建一个 FileInputStream 对象来读取文件内容 FileInputStream fis = new FileInputStream("test.txt"); // 创建一个 InputStreamReader 对象来将 FileInputStream 转换成 Reader InputStreamReader isr = new InputStreamReader(fis); // 创建一个 BufferedReader 对象来读取文件内容 BufferedReader br = new BufferedReader(isr); String line; while ((line = br.readLine()) != null) { System.out.println(line); } // 关闭文件流 br.close(); fis.close(); isr.close();
上面代码使用了三个不同的 Java 输入流对象来读取文件内容。首先使用 FileInputStream 读取文件内容,然后使用 InputStreamReader 将 FileInputStream 转换成 Reader ,最后使用 BufferedReader 来读取文件内容并打印出来。
DataInputStream可以从输入流中读取Java基本数据类型值。
DataInputStream类包含读取数据类型值的读取方法。例如,要读取int值,它包含一个readInt()方法;读取char值,它有一个readChar()方法等。它还支持使用readUTF()方法读取字符串。
以下代码显示了如何从文件读取原始值和字符串。
import java.io.DataInputStream; import java.io.FileInputStream; public class Main { public static void main(String[] args) { String srcFile = "primitives.dat"; try (DataInputStream dis = new DataInputStream(new FileInputStream(srcFile))) { // Read the data in the same order they were written int intValue = dis.readInt(); double doubleValue = dis.readDouble(); boolean booleanValue = dis.readBoolean(); String msg = dis.readUTF(); System.out.println(intValue); System.out.println(doubleValue); System.out.println(booleanValue); System.out.println(msg); } catch (Exception e) { e.printStackTrace(); } } }
上面的代码生成以下结果:
java.io.FileNotFoundException: primitives.dat (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at file.main(file.java:8)
JSF教程 -JSF图形图像示例h:graphicImage标签渲染类型为“img"的HTML元素。下面的代码h:graphicImage value="//www..cn/jsf.png"...
Java设计模式 - 命令模式命令模式是数据驱动设计模式它是行为模式之一。请求被作为命令的对象包装传递给invoker对象。Invoker对...
Java面向对象设计 -Java方法重写方法重写重新定义从超类继承的类中的实例方法称为方法重写。例子让我们考虑类A和类B的以下声明:p...
Java面向对象设计 -Java枚举比较您可以通过三种方式比较两个枚举常量:使用Enum类的compareTo()方法使用Enum类的equals()方法使...
JavaFX教程 -JavaFX FlowPaneFlowPane根据可用的水平间距布置一行中的节点当水平空间小于所有节点“宽度"的总和时,将节点包裹到...