Java字节流文件写入实战:FileOutputStream详解

需积分: 9 8 下载量 104 浏览量 更新于2024-08-18 收藏 207KB PPT 举报
"Java实例展示了如何使用字节流(FileOutputStream)将用户输入的字符写入文件。该程序创建了一个新的文本文件(newFile.txt),并利用System.in.read()从控制台读取用户输入的字符,直到遇到'?'为止。然后,这些字符通过FileOutputStream的write()方法写入到文件中。这个例子涉及到Java的输入输出(I/O)操作,包括字节流和文件操作。" Java的输入输出系统是基于流(Stream)的概念构建的,它允许数据以序列的形式在不同设备之间传输。Java的I/O库位于`java.io`包中,提供了丰富的类和接口来处理各种类型的输入和输出需求。 1. **输入/输出类库** `java.io`包包含了用于流式输入输出的多个类,包括字节流和字符流。字节流处理单个字节的数据,而字符流则处理Unicode字符。 2. **流的类型** - **输入流**: 用于将数据从外部源(如键盘、文件、网络等)读入程序。 - **输出流**: 用于将数据从程序输出到外部目标(如显示器、文件、网络等)。 3. **基本流类** - **InputStream**: 字节输入流的基类,提供读取字节数据的基本方法,如`read()`,`skip()`,`close()`等。 - **OutputStream**: 字节输出流的基类,提供写入字节数据的基本方法,如`write()`,`flush()`,`close()`等。 - **Reader**: 字符输入流的基类,处理字符数据。 - **Writer**: 字符输出流的基类,处理字符数据输出。 4. **子类和功能** - **FileInputStream**和**FileOutputStream**: 分别用于从文件读取和向文件写入数据。 - **FilterInputStream**和**FilterOutputStream**: 作为装饰者模式的一部分,用于增强或过滤基本流的功能。 - **DataInputStream**和**DataOutputStream**: 支持基本数据类型的读写,如int、float等。 - **BufferedInputStream**和**BufferedReader**: 提供缓冲机制,提高读写效率。 - **PrintStream**: 打印输出,通常用于控制台输出,支持错误处理。 - **InputStreamReader**和**OutputStreamWriter**: 作为字节流和字符流之间的桥梁,可以指定字符编码。 5. **方法示例** - `read()`: 从输入流中读取一个字节或字符。 - `write()`: 将一个字节或字符写入输出流。 - `flush()`: 清空缓冲区,确保所有数据都已写入目标。 - `close()`: 关闭流,释放资源。 - `mark()`: 设置标记,以便稍后可以通过`reset()`返回到此位置。 - `skip()`: 跳过指定数量的字节或字符。 在提供的Java实例中,`FileOutputStream`用于创建并写入文件,`System.in.read()`用于从控制台读取用户输入的字符,然后这些字符被写入到文件中。整个过程展示了Java I/O系统的基本用法,特别是在处理文件操作时。通过使用字节流,程序能够精确地控制文件的内容,而字符流则更适合处理文本数据。理解这些概念对于编写任何涉及文件读写的Java程序都至关重要。