Java入门——流

x字节型字符型
输入流InputStreamReader
输出流OutputStreamWriter

他们均作为抽象类,很多其他的流均由他们派生出来。

输入流

输入流的信息源可以位于文件、内存、或网络套接字socket等,类型可以为对象、字符、声音、图像等等,初学者可以将输入流类视为包裹在信息源的一层外衣,通过操作输入流类所带的方法,来从信息源中拿取数据。

输出流

输出流则也同样是相当于打开了系统与目标端之间的通道,向目标端中存放数据。

字节流

字节流(InputStream、OutputStream)是对字节类型的流数据进行操作的。
常用的方法如

//InputStream
public int read(byte b[],int off, int len) //将从信息源读取len个字节的数据,放到偏移量为off的b数组中,返回值是读取的字节数
public int close();//流每次使用完,需要对其进行关闭
//OutputStream
public void write(byte b[], int off, int len);//将数据写入目标端
public void flush();//将数据缓冲区的数据全部输出,并且清空缓冲区。
public void close();//关闭输出流释放相关系统资源

关于flush():简单来说,flush()方法是输出储存在内存中全部的内容(批量输出)。在操作系统中,为了防止一直不停地磁盘读写,所以设置了延迟写入的概念。一般在读写流(stream)的时候,数据是先被读到了内存中,再把数据写到文件中,当你数据读完的时候不代表你的数据已经写完制了,因为还有一部分有可能会留在内存这个缓冲区中。这时候如果你调用了close()方法关闭了读写流,那么这部分数据就会丢失,所以应该在关闭读写流之前先flush()。

字符流

主要用于支持Unicode编码的文字内容。Reader实现读入,Writer实现写入。

FileInputStream类和FileOutputStream类、FileReader类和FileWriter类 提供了基本的文件读写能力。
BufferedInputStream类和BufferedOutputStream类、BufferedReader类和BufferedWriter类 是上面的子类,在流的输入/出过程中提供了缓存功能。使用时需套接在相应字节流上。它实现了流数据操作时,一行一行的读或写,而不是像他们父类那样 一个一个的读或写。

FileReader file = new FileReader(filename);
BufferedReader bf = new BufferedReader(file);
String s = br.readLine(); //读取数据,碰到\n时表示数据读取结束,所有内容读完后返回null
while(s!=null){
	System.out.print(s);
	s=bf.readLine();
}
//写入时用newLine()方法,以在文件中写入\n字符

对于输入流、输出流的类,多种多样,初学者无需面面俱到,应用时适当选择即可,首要的是理解流、流类的作用(字节、字符、输入/出流相当于构造了系统与信息源/目标端的通道)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

缔曦_deacy

码字不易,请多支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值