`
noble510520
  • 浏览: 56264 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

简单的Writer和Reader

 
阅读更多

Writer用于写出去到文件中,Reader用于将外面的文件读进来控制台
Writer和Reader有许多子类,但是子类大多都是直接运用父类Writer和Reader的方法,而且Writer和Reader的方法不多,而且有共性,所以只需弄懂Writer和Reader的方法即可。
Writer和Reader都是抽象类,所以想输入输出只能用他们的子类


Writer

Writer的主要方法

1.构造方法
以FileWriter为例
FileWriter(String filename,boolean append)
FileWriter(File filename,boolean append)
将FileWriter与File类对象关联起来,File对象又与实际对象关联起来,append是判断是否需要续写,如果不需要续写,则覆盖重写,append可以用filename.isFile()或(new File(filename)).isFile()来判断是否存在这个文件
其他构造方法没这个好,就不介绍了
2.写入数据
writer(xxxxx):void xxxxxxx=int\String\char
append(xxxxx):Writer xxxx=String
这两个方法没有什么不同
3.刷新
flush():void 刷新了之后才能把储存在流中的数据写到文件中
close():void 刷新后关闭该流

FileWriter里面有一个方法newLine();无视系统平台的不同而导致换行符的不同,跨平台性

Writer工作原理

将写入的数据先储存到缓冲区中,随着刷新而将缓冲区中的数据输入到文件中,刷新后缓冲区清空。这就是缓冲技术。
因此有了BufferedWriter
对BufferedWriter操作实际上是对与BufferedWriter关联的FileWriter类操作,所以对BufferedWriter进行flush和close实际上是对FileWriter进行flush和close


Reader

Reade读进来,只能一个一个字符去读!!,所以在这里缓冲技术就显得格外重要

Reader的主要方法

1.构造方法
以FileReader为例
FileReader(String file)
FileReader(File file)
在这里不想Writer那样(如果存在file,则覆盖),在这里如果存在file,不会覆盖,如果不存在file或者file是一个目录,则抛出FileNotFoundException
2.读入数据
read():int 读取单个字符,角标会自动往下移,当到达末尾时返回-1
read(char[] array)=int 读取单个字符,角标会自动往下移,array需要定义长度,当到达末尾时返回-1,否则返回读入数据的个数.
-1可以用来控制read进程
注意:
因为读取一个数就覆盖array中的一个位置,所以最后一个数组有点奇怪
所以此时就需要String(char[] array,int begin,int len),begin是开始在array储存的角标,len是读取数据的长度.

FileReader reader=new FileReader("haha.txt");
int len;
char[] array=new char[1024];
String words=null;//用来储存文本数据
while(len=reader.read(array)!=-1){words=words+new String(array,0,len);}

3.关闭
close(); void
在输入流中不需要刷新,因为数据都储存在了数组里面

但是这样子读取数据太麻烦了,于是这是就应该用缓冲技术

BufferedReader

重要方法

readLine():String

若已经到了末尾,则返回null,这就可以用来控制read进程
一行一行的去读
需要注意的是,换行符是不会读到的,也就是String中没有\r\n
此时可以自己加上换行符,也可以用System.out.prinln(xxxxx)

readLine()的原理

\r(回车)是回到行首
\n(换行)是到下一行去,但是不是行首
readLine()不包括任何行终结符
实际上是read,read读到行终结符就不储存到数组中,反之储存进入数组

package mypackage;
import java.util.*;
import java.io.*;
public class MyBufferedReader{
    private FileReader filereader=null;
    public MyBufferedReader(FileReader filereader)throws IOException{
        this.filereader=filereader;
        }
    public String readLine()throws IOException{
        int hasNext=0;
        ArrayList<Character> list=new ArrayList<Character>();
        String line=null;
        while((hasNext=filereader.read())!=-1){
                if(hasNext!=(int)'\r'&&hasNext!=(int)'\n'){list.add((char)hasNext);}
                else if(hasNext==(int)'\r'){continue;}
                else{break;}
            }
        for(char a:list){
            line=a+line;
            }
        return line;
        }
    public void close()throws IOException{
        this.filereader.close();
        }
    }

复制的原理

将文本中的数据缓存到Reader流中,再新建一个文件,用Writer释放出去

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    Emv Reader Writer v8.6_Writerv8.6_EMVv8.6_EMVReader/Writer_EMVWr

    EMV Reader Writer v8.6 是一款专门针对EMV(Europay,...综上所述,EMV Reader Writer v8.6 是一个全面的工具,对于理解和管理基于EMV标准的智能卡至关重要,它提供了从读取卡片数据到安全地写入新信息的全套解决方案。

    OFD Reader & Writer 开源的OFD处理库

    本篇文章将重点介绍开源的OFD处理库——"OFD Reader & Writer",以及它在文档生成、数字签名、文档保护、文档合并、转换和导出等关键功能上的应用。 OFD Reader & Writer 是一款专为开发者设计的工具包,它允许...

    x2 5_writer_reader_software_x2_x2software_源码.zip

    "x2" 可能代表版本号或项目代号,而 "writer_reader" 明确指出其功能包含了写入和读取操作。 【描述】"x2 5_writer_reader_software_x2_x2software_源码.zip" 描述中并没有提供额外的具体信息,但根据文件名,我们...

    Java IO流 reader和writer的方法使用

    本文将深入探讨Java IO流中的`Reader`和`Writer`类及其常用方法,并通过具体的代码示例来展示这些方法的实际应用。 #### 一、Reader类及其方法 `java.io.Reader`是所有字符输入流的超类,用于读取文本。它的具体...

    EMV Reader Writer_EMV_EMVReader_EmvREADERwriter_

    在"EMV Reader Writer"的压缩包文件中,可能包含有驱动程序、用户手册、API文档、示例代码或其他资源,帮助用户安装、配置和使用该设备或软件。对于开发者来说,这些资料将有助于他们更好地集成EMV功能到自己的系统...

    用Reader和Writer将一个文件从一个地方复制到另一个地方

    用Reader和Writer将一个文件从一个地方复制到另一个地方

    ZGG2016#knowledgesystem#IO流07:Writer、Reader练习1

    IO流05:Writer、Reader练习* 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中* 数据源:* 目的地:public cl

    x2 5_writer_reader_software_x2_x2software.zip

    标题 "x2 5_writer_reader_software_x2_x2software.zip" 暗示着这是一个包含软件工具的压缩包,可能是一个阅读器和一个写入器的组合,用于处理特定类型的文件格式。从描述 "x2 5_writer_reader_software_x2_x2...

    reader and writer---操作系统之课程设计

    在"reader and writer---操作系统之课程设计"中,学生可能需要完成以下任务: 1. **模型建立**:创建读者和写者的抽象类或接口,定义它们的行为,如读取、写入和等待操作。 2. **资源管理**:设计一个管理共享资源...

    好用的Bitmap图像库Bitmap Image Reader Writer Library

    一个比较好用的Bitmap Image Reader Writer Library 。该库只有一个hpp文件,跟CImg有几分相似(但功能没有CImg丰富,可满足日常开发的基本需求足够)。该库不仅可以很方面的进行bmp文件的读写操作,而且还可以进行...

    Uwes S7 MMC Image Reader&Writer;

    Uwes S7 MMC Image Reader V0.95用于对S7-300的MMC储存卡数据读出,可以用作备份MMC数据 Uwes S7 MMC Image Writer V0.9用于对S7-300的MMC储存卡数据写入,可以用作恢复

    操作系统课程设计-实现读者写者(Reader-Writer Problem)问题

    操作系统课程设计 - 实现读者写者(Reader-Writer Problem)问题 知识点一:操作系统课程设计 操作系统课程设计是计算机科学和技术专业的核心课程之一,旨在培养学生对操作系统的基本概念、设计原理和实现方法的...

    reader and writer

    该问题涉及到多个读者和一个写者共享同一资源,其中读操作可以同时由多个读者执行,但写操作必须互斥进行,即同一时刻只能有一个写者或者任意数量的读者。Java作为一种多线程编程语言,提供了丰富的API来解决这类...

    java csv reader writer

    总之,本项目通过Maven和Apache Commons CSV库展示了在Java中高效处理CSV文件的方法,无论是简单的读写操作还是复杂的格式控制,都能轻松应对。对于任何涉及CSV数据处理的Java开发者来说,这都是一个实用的起点。

    reader_writer_uoml.zip

    在安装"reader_writer_uoml.zip"之前,请确保你的系统满足软件的最低硬件和操作系统需求。通常,这些信息会在安装指南或压缩包内的readme文件中提供。解压缩后,运行安装程序,按照提示完成安装过程。安装完成后,你...

    EMV Reader Writer_EmvREADERwriter_EMV_EMVReader,Writer_EMVReader

    EMV Reader Writer是针对EMV(Europay, Mastercard, Visa)标准的读卡器和写卡器设备,主要用于处理和支持智能银行卡的操作。EMV技术是全球金融领域广泛采用的一种安全支付标准,旨在提高非接触式和接触式支付的安全...

    Go-带有进度和剩余时间估计的io.Reader和io.Writer

    在Go语言中,`io.Reader`和`io.Writer`是两个非常基础且重要的接口,它们分别代表了数据的读取和写入操作。在处理大量数据传输时,如文件复制或网络流,开发者通常需要知道当前操作的进度以及预计剩余时间,以便提供...

    java 文件存储 Inputstream outputstream reader writer的用法

    `InputStream`、`OutputStream`、`Reader`和`Writer`是Java IO流的基础类,它们提供了读写文件的基本接口。本篇文章将深入讲解这些类的用法,并提供实际的代码示例,帮助初学者更好地理解和应用。 1. `InputStream`...

Global site tag (gtag.js) - Google Analytics