`

JavaI/0操作输入输出流简介(二)

 
阅读更多

 

      Reader和Writer

           首先,我们要明确一点,Reader和Writer不是为了取代InputStream和OutStream的,而且他们之间在代码上可以看到,也没有什么直接的关系。两者最大的区别呢,是Reader和Writer提供兼容Unicode与面向字符的I/O功能,而后两者则是提供面向字节形式的I/O操作。(1个字符=2个字节)

 

           有的时候,我们需要将来自于字节层次结构中的类和来自于字符层次结构中的类结合起来使用,这时候,从应用场景上就可以看到,这是典型的适配器模式。。。适配器类,InputStreamReader可以把InputStream转化为Reader,而OutputStreamWriter可以把OutputStream转换为Writer。

一个简单的例子

 

BufferedReader in = new BufferedReader( new FileReader(fileName));
String  s = null;
StringBuilder sb = new StringBulider();
while((s=in.read.readLine())!=null) {
   sb.append(s).append("\n");
}
in.close();
上面这段代码其实很简单了,只所以拿出来,是因为红色部分,注意,我们在每行数据后又加了换行符,因为readLine()方法已经把换行符删掉了。。。

 

 

 

自我独立的类:RandomAccessFile

        这个类适用于由大小已知的记录组成的文件,我们可以使用seek()将记录从一处转移到一处,然后对其进行读取或者修改。 PS:对于文件中的记录,其大小不一定非得要求相等,当然这种情况下我们需要确定文件中每个记录的大小以及他们所在的位置。

      为什么说这个类是独立的呢,因为它不继承于InputStream和OutputStream,其除了implements  DataOutput, DataInput这两个接口外,与其他的输入输出流就没什么联系了。他跟其他I/O类型最大的不同点再于:使用它我们可以再一个文件内部向前和向后移动。

     下面是JDK中关于其的部分源码,主要是构造函数

 

  public RandomAccessFile(String name, String mode)
	throws FileNotFoundException
    {
        this(name != null ? new File(name) : null, mode);
    }
 注意其第二个参数,代码的是文件的读写模式,如“r” 代表随机读,“rw”代表既读又写。。。但是要注意的是,不可以是“w”,这说明RandomAccessFile不支持只写模式。

     最后强调一下,使用这个类的时候,我们必须知道文件的排版(其实就是每条记录的大小和位置),只有这样才能正确的使用它。

      

 

 

 

 

分享到:
评论

相关推荐

    Java I/O 标准输入输出流System.in

    在Java编程语言中,I/O(输入/输出)是程序与外部世界交互的重要部分,而标准输入输出流(System.in, System.out, System.err)是Java内置的预定义流,用于处理程序与操作系统之间的基本输入输出操作。这篇博客将深入...

    java i/0习题

    二、输出流(Output Stream) 1. 字节流:OutputStream是所有字节输出流的基类,例如FileOutputStream用于写入文件,System.out用于输出到控制台。 2. 字符流:Writer是所有字符输出流的基类,FileWriter用于写入...

    实验9 Java输入输出流.doc

    Java输入输出流是Java编程中一个非常重要的概念,主要用于数据的读取和写入操作,包括文本文件和二进制文件。在实验9中,主要目的是理解和掌握I/O流的分类,以及如何进行文本和二进制文件的读写。 I/O流在Java中被...

    java i/o包流式输入输出和文件操作

    Java I/O 包是Java平台的核心部分,它提供了丰富的类和接口用于处理输入输出操作,包括文件操作和流式输入输出。在这个主题中,我们将深入探讨如何使用Java进行文件管理和流处理。 首先,我们来看看`java.io`包中的...

    Java I/O 过滤流-带格式的读写操作

    在Java编程语言中,输入/输出(I/O)是处理数据传输的核心部分。过滤流(Filter Stream)是Java I/O框架中的一个重要概念,它提供了一种优雅的方式来进行数据的读写操作,同时允许我们添加额外的功能,如字符编码...

    Java I/O, 2nd Edition

    流是数据传输的核心机制,分为字节流和字符流两大类,包括输入流和输出流。缓冲区则可以提高I/O操作的效率,减少磁盘和内存之间的交互次数。字符编码如UTF-8、GBK等在处理多语言文本时至关重要。 2. **标准I/O库**...

    java 输入输出流

    Java中的输入输出流是Java I/O(Input/Output)系统的核心组成部分,允许程序与外部数据源进行交互。在Java中,所有的I/O操作都基于流的概念,流是数据的序列,可以是字节流或字符流。Java I/O库提供了一系列的类来...

    文件上传/下载使用输入输出流操作文件

    在Java编程中,文件上传和下载是常见的任务,通常涉及到输入输出流(Input/Output Stream)的操作。输入输出流是Java I/O系统的基础,用于在内存与外部存储设备之间传输数据。下面将详细讲解如何使用输入输出流实现...

    Java I/O编程 java

    1. 数据流的概念及输入输出方法: 数据流是计算机中进行数据传输的通道,包括从外部设备到程序的数据输入流和从程序到外部设备的数据输出流。Java 中的I/O操作主要依赖于`java.io.*`包中的类和接口。程序作为数据的...

    Java I/O, NIO and NIO.2

    总的来说,Java I/O、NIO和NIO.2是Java平台中处理输入输出的三个重要阶段,它们各自有其特点和适用范围。学习和运用这些技术,能够帮助开发者更好地处理数据交互,提高程序的性能和可扩展性。通过阅读《Java I:O, ...

    Java I/O流通讯录

    Java I/O流通讯录是一个基于Java编程语言设计的实用程序,它主要用于演示和学习Java的I/O流操作。在这个项目中,开发者通过I/O流实现了对文件的读写功能,从而构建了一个简单的通讯录系统。这个系统允许用户进行添加...

    Java I/O系统

    Java I/O系统是Java编程语言中的一个重要组成部分,它允许程序进行输入输出操作,与外部世界进行数据交互。在Java中,I/O系统基于流的概念,流可以被视为数据的流动渠道,既可以用来读取数据(输入流),也可以写入...

    java输入输出流学生成绩管理

    在Java编程语言中,输入输出流(Input/Output Stream)是处理数据传输的核心部分,尤其在文件操作和网络通信中。对于"java输入输出流学生成绩管理"这个项目,我们可以推断它是一个使用Java I/O流实现的学生分数管理...

    java输入输出流与文件处理

    **输入输出流与文件处理**在编程领域占据着核心地位,特别是在Java中,通过`java.io`包提供了丰富的类和接口来支持输入输出操作。这包括从键盘读取用户输入、从文件或网络读取数据、以及将数据写入文件或网络等场景...

    java I/O类的使用

    Java 1.1引入了过滤器流的概念,如`FilterInputStream`、`FilterReader`和`FilterOutputStream`,它们作为装饰器接口,用于给原始的输入/输出流添加额外的功能。例如,`DataInputStream`和`DataOutputStream`就是...

    java输入输出流,电子课件

    Java输入输出流是Java编程中不可或缺的部分,它用于应用程序与外部设备之间进行数据交换,比如磁盘、网络、键盘和显示器。I/O流是Java中处理输入和输出的基础框架,它提供了一种抽象的方式来处理不同类型的输入源和...

    java 输入输出流 实例

    Java输入输出流(I/O流)是Java编程语言中用于处理数据输入和输出的重要机制。在Java中,I/O流允许程序与外部源(如键盘、显示器、文件、网络连接等)交换数据。本实例将深入讲解如何使用Java I/O流进行文件的读取和...

    深入分析 Java I/O 的工作机制(转载)

    流可以是输入流或输出流,输入流用于从源头获取数据,输出流则用于向目的地发送数据。Java提供了许多预定义的流类,例如FileInputStream和FileOutputStream分别用于读取和写入文件,而SocketInputStream和...

    java I/0实现

    Java I/O流的层次结构复杂且广泛,包括了标准输入输出、文件操作、网络数据流、字符串流、对象流以及压缩文件流等多种类型。例如,BufferedReader和BufferedWriter用于提高读写性能,FileReader和FileWriter专门用于...

Global site tag (gtag.js) - Google Analytics