InputStream类,表示字节输入流的所有类的超类,是一个抽象类。和OutputStream的实例都是顺序访问流。
InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。
为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:
BufferedReader in
= newBufferedReader(new InputStreamReader(System.in));
1. java.io.BufferedReader和java.io.BufferedWriter类各拥有8192字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。
2. 从标准输入流System.in中直接读取使用者输入时,使用者每输入一个字符,System.in就读取一个字符。为了能一次读取一行使用者的输入,使用了BufferedReader来对使用者输入的字符进行缓冲。readLine()方法会在读取到使用者的换行字符时,再一次将整行字符串传入。
3. System.in是一个位流,为了转换为字符流,可使用InputStreamReader为其进行字符转换,然后再使用BufferedReader为其增加缓冲功能。例如:
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
下面的示例示范了BufferedReader和BufferedWriter的使用。可以在文字模式下输入字符,程序会将输入的文字存储至指定的文件中,如果要结束程序,输入quit字符串即可。
- package ysu.hxy;
- import java.util.*;
- import java.io.*;
- public class BufferedReaderWriterDemo
- {
- public static void main(String[] args)
- {
- try
- {
- //缓冲System.in输入流
- //System.in是位流,可以通过InputStreamReader将其转换为字符流
- BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in));
- //缓冲FileWriter
- BufferedWriter bufWriter = new BufferedWriter(new FileWriter(args[0]));
- String input = null;
- //每读一行进行一次写入动作
- while(!(input = bufReader.readLine()).equals("quit"))
- {
- bufWriter.write(input);
- //newLine()方法写入与操作系统相依的换行字符,依执行环境当时的OS来决定该输出那种换行字符
- bufWriter.newLine();
- }
- bufReader.close();
- bufWriter.close();
- }
- catch(ArrayIndexOutOfBoundsException e)
- {
- System.out.println("没有指定文件");
- }
- catch(IOException e)
- {
- e.printStackTrace();
- }
- }
- }
运行结果:
D:\hxy>java ysu.hxy.BufferedReaderWriterDemo test2.txt
fsdafjads;fa
fasdfas
asdfdaf
asd
fdas
fds
fa
df
asdf
dasff
adsf
a
fasd
quit
会在目录下产生一个文件test2.txt,并在其中写入刚才输入的内容。
相关推荐
文件流的概念基于输入/输出(I/O)操作,通过建立一个连接到磁盘文件的通道,实现数据在内存与磁盘之间的传输。本文将详细介绍C#中关于文件流的操作,以及如何使用File类、Directory类、FileInfo类和DirectoryInfo类...
下面将详细探讨文件流IO的基本概念、类型以及在Java和Android中的应用。 一、文件流基础 1. 流的概念:在计算机科学中,流是一种抽象概念,代表数据序列的传输。它可以是从一个源头到一个接收端的数据流动,就像...
一、文件流的概念 文件流是指在计算机中对文件进行读取、写入、复制等操作的过程。文件流可以分为输入流和输出流两种,输入流用于读取文件的内容,而输出流用于写入文件的内容。在Java中,FileInputStream和...
首先,理解“文件流”概念至关重要。文件流是一种处理大文件的方法,它允许数据被分块读取或写入,而不是一次性加载整个文件到内存中。这对于处理大型PDF文件非常有用,可以避免内存占用过多的问题。PDF.js支持文件...
文件流在这里起着关键作用,它允许我们按需读取文件并将其发送到客户端,而不是一次性加载整个文件到内存。 2. **MVC控制器**: 在ASP.NET Web API中,控制器负责处理HTTP请求并生成响应。你需要创建一个控制器方法...
文件流是.NET Framework提供的一个抽象概念,它允许程序以字节序列的形式处理文件,实现了读取、写入和操作文件的功能。常见的文件流类型包括FileStream、MemoryStream和NetworkStream等。 **下载过程:** 1. **...
本教程将深入讲解文件流的基本概念、操作方法以及其在实际编程中的应用。 1. **文件流的基本概念** 文件流是计算机科学中的一种抽象概念,它将文件视为一系列的数据流,可以像处理内存中的数据一样进行读写。文件...
文件流是.NET Framework中的一个抽象概念,它允许程序与磁盘、网络或其他存储设备上的文件进行交互。`System.IO`命名空间提供了多种类型的文件流类,如`FileStream`、`MemoryStream`和`NetworkStream`等。在本场景中...
1. 文件流的概念:文件流是.NET Framework提供的一种处理文件数据的方式,通过抽象出“流”的概念,简化了对文件的操作。它可以读取文件、写入文件或者同时进行读写。 2. 文件流分类:C#中的文件流分为两类,即字节...
文件流的概念源自C++标准库中的iostream,它允许开发者以一种高效且灵活的方式读写文件。本教程将针对初学者,详细介绍如何在VC++中使用文件流进行文件操作。 首先,我们要理解什么是文件流。文件流是一种抽象概念...
本文将详细探讨C#中的文件流概念、其工作原理以及如何进行实际操作。 文件流是.NET Framework提供的一种机制,用于读取、写入或追加文件数据。它抽象了底层操作系统I/O操作,使得程序员可以更加方便地与文件交互。...
文件流是.NET Framework提供的一个抽象概念,它将文件视为数据流,可以按顺序读取或写入。C#中主要的文件流类型包括`FileStream`、`StreamReader`和`StreamWriter`等。这些类位于System.IO命名空间下,是处理文件I/O...
Java中处理文件和数据时,使用流的概念来进行操作。根据不同的标准,流可以分为几种类型。 ##### 1. 按数据流动方向 - **输入流**:主要用于从数据源读取数据。输入流只能从中读取数据,而不能向其中写入数据。...
本文将详细探讨如何使用C++通过加密文件流的方式来实现这一目标。标题“资源文件保护--加密文件流”指出,我们将研究一种方法,利用C++编程语言,对文件进行加密处理,以确保其在传输或存储时的安全。 描述中提到的...
总结来说,"文件流序列化"在Delphi中是一个重要的概念,它允许开发者将对象的状态转换为文件流,便于数据持久化和跨进程通信。通过理解TStream接口和相关组件的使用,我们可以有效地在文件系统中存储和检索对象数据...
掌握NTFS文件流的使用可以提升你在系统管理和安全领域的专业能力,理解其工作原理和应用方式对于系统管理员、开发者以及信息安全专家来说都是至关重要的。在实际操作中,要注意安全风险,避免被恶意软件利用,并确保...
1. 文件流:文件流是一种抽象的概念,它将文件视为一系列可以按顺序读写的字节序列。在Delphi中,文件流通常涉及到TStream和TFileStream这两个核心接口和类。 2. TStream:这是Delphi中所有流对象的基类,提供了...
Java中主要有两种类型的文件流:字节文件流和字符文件流。 - 字节文件流:主要用于处理二进制数据,例如图片、音频等。 - 字符文件流:主要用于处理文本数据,如文本文件。 #### 3. 缓冲流(Buffered Stream) ...
在C#编程中,文件流是处理数据输入和输出的核心概念。它允许程序与存储设备进行交互,如硬盘、内存或网络。文件流提供了一种高效且灵活的方式来读取、写入和操作文件。本篇将详细介绍C#中关于文件流的使用,包括创建...
无论选择哪种方式,获取文件流后,我们都可以进行进一步的操作,如保存到磁盘、存储到云服务、进行文件格式转换,或者进行内容检测等。确保正确处理文件流不仅可以提高程序的效率,还能有效防止内存问题,确保系统的...