`

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流通讯录

    使用Java编写的一个可使用I/O读写文件的通讯录,具体可实现添加联系人、删除联系人、修改联系人、查看联系人等,无前端页面控制台输入输出 学习JavaI/O流的可下载学习

    《Java程序设计》输入输出流.ppt

    本资源详细的讲解了java程序设计中输入输出流的知识,包括输入输出基类,File I/O,数据输入输出流,随机存取文件,文件的其它操作,java 中的unicode等.值得大家分享.

    Java I/O输入输出流详解

     文件操作的时候一定要记得关闭!!!!!!!!  ASCII:美国标准信息交换码,用一个字节的7位可以表示一个字符  ISO8859-1:拉丁码表,西欧标准字符集,用一个字节的8位表示  GB2312:中文编码表,用两个...

    Java I/O底层是如何工作的?

    本文服务的读者,迫切希望了解Java I/O操作是在机器层面如何进行映射,以及应用运行时硬件都做了什么。假定你熟悉基本的I/O操作,比如通过Java I/O API读写文件。这些内容不在本文的讨论范围。  目录  缓存处理...

    Java Zip算法压缩多个文件的例子.rar

    Java Zip算法压缩多个文件的例子,具体的实现原理是:先打开文件并读取,然后利用ZipEntry实例化待压缩的条目列表,将ZIP条目列表写入输出流,从源文件得到文件输入流,写入缓冲数据等。相关代码:  ...

    java IO流总结.md

    2.数据的流向:输入流、输出流 3.流的角色:节点流、处理流 节点流:直接从数据源或目的地读写数据 处理流:不直接连接到数据源或目的地,而是“连接”在已存在的流(节点流或处理流)之上,通过对数据的...

    Java_IO操作总结

    详解Java I/O相关知识点.学习Java语言IO的数据流概念,讲述了每个类的具体应用范围,IO基本概念,输入输出流的处理,并且给出众多的实例代码。 。

    I/O流.xmind

    它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出源(键盘、文件、网络连接等)抽象表述为“流”(stream),通过流的方式允许Java程序使用相同的方式来访问不同的输入输出源。

    java-io-guide:Java中的Java IO(输入和输出流)指南

    File示例列表,显示了使用Java I / O创建,读取,写入,修改文件以及获取文件信息的方法。 使用BufferInputStream读取文件 使用DataInputStream读取文件 以字节为单位获取文件大小KB MB GB TB 文件序列化示例 如何...

    基础深化和提高-IO流技术学习大全

    字节输入流(InputStream)和字节输出流(OutputStream):用于处理二进制数据,以字节为单位进行读写。常见的实现类包括FileInputStream、FileOutputStream等。 字符流: 字符输入流(Reader)和字符输出流...

    JAVA_API1.6文档(中文)

    java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...

    编程课件+Java系列课程+PPT课件+Java教学

    # Java基础知识课件教程浓缩版 Java是一种跨平台、面向对象的编程语言,广泛应用于企业级应用、移动...- I/O流:讲解输入输出流的基本概念。 - 文件操作:指导文件的读写和操作。 六、多线程编程 - 线程基础:说明

    Java BIO、NIO、AIO、Netty知识详解(值得珍藏)

    Java中I/O是以流为基础进行数据的输入输出的,所有数据被串行化(所谓串行化就是数据要按顺序进行输入 输出)写入输出流。简单来说就是java通过io流方式和外部设备进行交互。 在Java类库中,IO部分的内容是很庞大的,...

    Java 模拟文件管理器

    模拟文件管理器程序,实现控制台对文件和文件夹的管理操作。适合Java初学者,练习学习I/0输入输出,使用了IO中的File类、字符流和集合ArrayList等基础Java知识

    本项目拳皇游戏是一款基于Java语言的休闲类格斗游戏,支持双人联机对战,Java大作业项目

    异常的捕获主要用于网络连接异常的捕获,如socket的输入输出流。 1.2 Thread 线程技术主要用于两个主要方面。第一,网络连接的服务端使用了多线程,允许连接多个客户端并对其进行信息收发;第二,在GUI主面板中使用...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java api最新7.0

    java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 ...

    通过java操作excel表格的工具类库jxl

     输出流也关闭吧  os.close;  OK,只要把读和写结合起来,就可以在N个Excel中读取数据写入你希望的Excel新表中,还是比较方便的。  下面是程序一例:  程序代码:sql = "select * from tablename";  rs = stmt....

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    Java 1.6 API 中文 New

    java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 ...

Global site tag (gtag.js) - Google Analytics