`

文件流一些概念

    博客分类:
  • Java
 
阅读更多

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为其增加缓冲功能。例如:

Java代码  收藏代码
  1. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));  

 下面的示例示范了BufferedReader和BufferedWriter的使用。可以在文字模式下输入字符,程序会将输入的文字存储至指定的文件中,如果要结束程序,输入quit字符串即可。

Java代码  收藏代码
  1. package ysu.hxy;  
  2. import java.util.*;  
  3. import java.io.*;  
  4.   
  5. public class BufferedReaderWriterDemo   
  6. {  
  7.     public static void main(String[] args)   
  8.     {  
  9.         try  
  10.         {  
  11.             //缓冲System.in输入流  
  12.             //System.in是位流,可以通过InputStreamReader将其转换为字符流  
  13.             BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in));  
  14.             //缓冲FileWriter  
  15.             BufferedWriter bufWriter = new BufferedWriter(new FileWriter(args[0]));  
  16.   
  17.             String input = null;  
  18.   
  19.             //每读一行进行一次写入动作  
  20.             while(!(input = bufReader.readLine()).equals("quit"))  
  21.             {  
  22.                 bufWriter.write(input);  
  23.                 //newLine()方法写入与操作系统相依的换行字符,依执行环境当时的OS来决定该输出那种换行字符  
  24.                 bufWriter.newLine();  
  25.             }  
  26.             bufReader.close();  
  27.             bufWriter.close();  
  28.         }  
  29.         catch(ArrayIndexOutOfBoundsException e)  
  30.         {  
  31.             System.out.println("没有指定文件");  
  32.         }  
  33.         catch(IOException e)  
  34.         {  
  35.             e.printStackTrace();  
  36.         }  
  37.     }  
  38. }  

 运行结果:

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,并在其中写入刚才输入的内容。

分享到:
评论

相关推荐

    C#文件流,概念,操作

    文件流的概念基于输入/输出(I/O)操作,通过建立一个连接到磁盘文件的通道,实现数据在内存与磁盘之间的传输。本文将详细介绍C#中关于文件流的操作,以及如何使用File类、Directory类、FileInfo类和DirectoryInfo类...

    文件流IO,android文件流

    下面将详细探讨文件流IO的基本概念、类型以及在Java和Android中的应用。 一、文件流基础 1. 流的概念:在计算机科学中,流是一种抽象概念,代表数据序列的传输。它可以是从一个源头到一个接收端的数据流动,就像...

    以文件流的方式复制文件

    一、文件流的概念 文件流是指在计算机中对文件进行读取、写入、复制等操作的过程。文件流可以分为输入流和输出流两种,输入流用于读取文件的内容,而输出流用于写入文件的内容。在Java中,FileInputStream和...

    pdf.js使用文件流预览pdf

    首先,理解“文件流”概念至关重要。文件流是一种处理大文件的方法,它允许数据被分块读取或写入,而不是一次性加载整个文件到内存中。这对于处理大型PDF文件非常有用,可以避免内存占用过多的问题。PDF.js支持文件...

    Web Api 通过文件流 下载文件到本地实例

    文件流在这里起着关键作用,它允许我们按需读取文件并将其发送到客户端,而不是一次性加载整个文件到内存。 2. **MVC控制器**: 在ASP.NET Web API中,控制器负责处理HTTP请求并生成响应。你需要创建一个控制器方法...

    文件流的下载和上传

    文件流是.NET Framework提供的一个抽象概念,它允许程序以字节序列的形式处理文件,实现了读取、写入和操作文件的功能。常见的文件流类型包括FileStream、MemoryStream和NetworkStream等。 **下载过程:** 1. **...

    文件流操作

    本教程将深入讲解文件流的基本概念、操作方法以及其在实际编程中的应用。 1. **文件流的基本概念** 文件流是计算机科学中的一种抽象概念,它将文件视为一系列的数据流,可以像处理内存中的数据一样进行读写。文件...

    .net通过文件流获取对方请求过来的文件

    文件流是.NET Framework中的一个抽象概念,它允许程序与磁盘、网络或其他存储设备上的文件进行交互。`System.IO`命名空间提供了多种类型的文件流类,如`FileStream`、`MemoryStream`和`NetworkStream`等。在本场景中...

    C#文件流使用案例

    1. 文件流的概念:文件流是.NET Framework提供的一种处理文件数据的方式,通过抽象出“流”的概念,简化了对文件的操作。它可以读取文件、写入文件或者同时进行读写。 2. 文件流分类:C#中的文件流分为两类,即字节...

    VC++程序设计“文件流”

    文件流的概念源自C++标准库中的iostream,它允许开发者以一种高效且灵活的方式读写文件。本教程将针对初学者,详细介绍如何在VC++中使用文件流进行文件操作。 首先,我们要理解什么是文件流。文件流是一种抽象概念...

    文件流显示,仅供学习参考

    本文将详细探讨C#中的文件流概念、其工作原理以及如何进行实际操作。 文件流是.NET Framework提供的一种机制,用于读取、写入或追加文件数据。它抽象了底层操作系统I/O操作,使得程序员可以更加方便地与文件交互。...

    C#文件流的使用

    文件流是.NET Framework提供的一个抽象概念,它将文件视为数据流,可以按顺序读取或写入。C#中主要的文件流类型包括`FileStream`、`StreamReader`和`StreamWriter`等。这些类位于System.IO命名空间下,是处理文件I/O...

    Java流(文件读写操作)

    Java中处理文件和数据时,使用流的概念来进行操作。根据不同的标准,流可以分为几种类型。 ##### 1. 按数据流动方向 - **输入流**:主要用于从数据源读取数据。输入流只能从中读取数据,而不能向其中写入数据。...

    资源文件保护--加密文件流

    本文将详细探讨如何使用C++通过加密文件流的方式来实现这一目标。标题“资源文件保护--加密文件流”指出,我们将研究一种方法,利用C++编程语言,对文件进行加密处理,以确保其在传输或存储时的安全。 描述中提到的...

    文件流序列化

    总结来说,"文件流序列化"在Delphi中是一个重要的概念,它允许开发者将对象的状态转换为文件流,便于数据持久化和跨进程通信。通过理解TStream接口和相关组件的使用,我们可以有效地在文件系统中存储和检索对象数据...

    NTFS文件流访问

    掌握NTFS文件流的使用可以提升你在系统管理和安全领域的专业能力,理解其工作原理和应用方式对于系统管理员、开发者以及信息安全专家来说都是至关重要的。在实际操作中,要注意安全风险,避免被恶意软件利用,并确保...

    Delphi中文件流的基础使用方法

    1. 文件流:文件流是一种抽象的概念,它将文件视为一系列可以按顺序读写的字节序列。在Delphi中,文件流通常涉及到TStream和TFileStream这两个核心接口和类。 2. TStream:这是Delphi中所有流对象的基类,提供了...

    Java中的流与文件

    Java中主要有两种类型的文件流:字节文件流和字符文件流。 - 字节文件流:主要用于处理二进制数据,例如图片、音频等。 - 字符文件流:主要用于处理文本数据,如文本文件。 #### 3. 缓冲流(Buffered Stream) ...

    C#关于文件流的使用

    在C#编程中,文件流是处理数据输入和输出的核心概念。它允许程序与存储设备进行交互,如硬盘、内存或网络。文件流提供了一种高效且灵活的方式来读取、写入和操作文件。本篇将详细介绍C#中关于文件流的使用,包括创建...

    获取上传文件的流

    无论选择哪种方式,获取文件流后,我们都可以进行进一步的操作,如保存到磁盘、存储到云服务、进行文件格式转换,或者进行内容检测等。确保正确处理文件流不仅可以提高程序的效率,还能有效防止内存问题,确保系统的...

Global site tag (gtag.js) - Google Analytics