常用I/O流类方法


前言

用于输入和输出的类方法常用的就几个,但是易混淆,本文就大概罗列归纳了一下字节流和字符流的常用方法,也方便自己进行一次梳理。

一、字节流

顶级父类InputStream我认为最重要的最基础的是read()方法,因为所有子类都覆盖了这个方法:

abstract int read()  //读入并返回一个字节,且在流末尾时返回值为-1,通常用while( b!=-1)语句进行判断

相对应的OutputStream的基础方法是write()方法:

abstract int write(int n)

举个例子 将hello.txt拷贝到ok.txt文件,就需要先读后写:

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Main {
    public static void main(String[] args) throws Exception{
        System.getProperty("user.dir");
        FileInputStream in=new FileInputStream("E:\\hello.txt");
        FileOutputStream out=new FileOutputStream("E:\\OK.txt");
        int b=0;
        while ((b=in.read())!=-1){
            out.write(b);
        }
        in.close();
        out.close();
        }
    }

除此之外还重载了这两个方法,参数都是byte[] b或者byte[] b,int off, int len;
另外InputStream类还有其他几个方法例如

long skip(long n); //跳过n个字节,返回实际跳过的字节数
void mark(); //当前位置标记一个位置
void reset(); //返回最后的标记,重新读入
boolean markSupported(); //是否支持标记,是返回true

OutputStream类则要简单很多:

void flush();  //清空输出流。缓存全部发送到目的地

这两个父类的子类还有很多,诸如以二进制格式读写的Data流;读写压缩文件的Zip流;

二、字符流

对于字符流的抽象类Reader和Writer类其方法与字节流类似,方法也是read()和write();
但是这里新增了4个附加的接口:Closeable、Flushable、Readable、Appendable。我理解的这4个接口分别代表:关闭、清空、读、添加。
其中第一个接口Closeable所有流都实现了,第二个接口Flushable则是输出流实现的。
第三个接口Readable则是字符输入流实现了,只有一个方法:

int read(CharBuffer cb);  //读入cb缓冲区里可以持有的char值

第四个接口Appendable只有字符输出流实现了,主要方法是append(),用于追加给定的字符或者字符串,返回this;

三、组合流过滤器

如果单独通过某个流进行读入或者写入数据,有很大的限制性,比如通过父类InputStream和OutputStream支持字节上的读入,但是不能读取数字,如果想要读取数字则需要用到其他的子类,因此我们可以用组合流来进行这一操作。
其作用原理是先通过一个流对象a读入需要的数据,随后这个对象a作为参数传递给另外一个流对象b,以此类推达到一个过滤的作用。这也使得对流的操作灵活性有了很大的提高。
其书写方式举个例子:

FileInputStream a=new FileInputStream("hello.txt");
DataInputSteam b=new DataInputSteam(a);
double s=b.readDouble();

另一个书写方式:

DataInputSteam b=new DataInputSteam(
new BufferedInputSteam(
new FileInputStream("hello.txt")));

总结

关于流的内容很多,今天看JAVA 核心技术卷2,把这些基本内容梳理了一遍,收获还是很多,可以建议去看一看,接下来继续努力把关于流的其他内容在继续研究研究,代码还是需要多多实践梳理才能提高啊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值