java中流_Java中流的有关知识点详解

什么是流?

流:程序和设备之间连接起来的一根用于数据传输的管道,流就是一根管道。

流的分类:

四大基本抽象流(输入流,输出流,字符流,字节流)

文件流

缓冲流

转换流

数据流     流一定是类,但类不一定是流

print流

object流

按数据流的方向不同可以分为输入流和输出流。

按处理数据单位不同可以分为字节流和字符流。(一个字符是两个字节)

按功能不同可以分为节点(原始)流和处理(包裹)流。

字节流         字符流

输入流      InputStream      Reader

输出流      OutputStream     Writer

文件流:

读取一个文件内容并将其输出到显示器上,并统计读取出来的字节的个数。字符串来表示操作系统的文件路径时,我们可以使用\\和/两种方式来作为文件夹的路径分隔符。

什么是字节流?

FileInputStream       FileOutputStream

什么是字符流?

FileReader       FileWriter

eg:

import java.awt.*;

public class test{

public static void main(String[] args){

FileReader fr=new FileRead("D:\\share\\test.java");

FileWriter fw=new FileWrite("d:/zhangsan.haha");

int ch;

ch=fr.read();

while(-1 != ch){

fw.write(ch); //将test文件中fr的数据读给程序,再将程序中的数据写给fw的zhangsan文件夹中

ch=fr.read();

}

fw.flush();

fr.close();

fw.close();

}

}

字符流和字节流的区别:

字节流可以完成所有格式文件的赋值

字符流值可以完成文本文件的复制,却无法完成视频格式文件的复制。

因为字节是不需要解码和编码的,将字节转化为字符才存在解码和编码的问题。

字节流可以从所有格式的设备中读取数据,但字符流只能从文本格式的设备中读写数据。如果通过一个字节流把文本文件的内容输出到显示器上,当输出汉字时就会出现乱码。

缓冲流:Buffered

缓冲流就是带有缓冲区的输入输出流

缓冲流可以显著的减少我们对IO访问的次数,保护我们的硬盘。

缓冲流本身就是处理流,必须依附于节点流,处理流是包裹在原始节点上的流,相当于包括在管道上的管道。

BufferedInputStream :带缓冲的输出流,允许一次向硬盘写入多个字节的数据

BufferedOutputStream :带缓冲区的输入流,允许一次向程序中读入多个字节的数据

BufferedWriter BufferedReader可以提高读写文本文件内容的速度

eg:

import java.awt.*;//带缓冲区的字节流处理文件的速度要快于不带缓冲区的字节流。

public class test{

public static void main(String[] args){

BufferedInputStream bis=new BufferedInputStream (new FileRead("D:\\share\\test.java"));

BufferedOutputStream bos= new BufferedOutputStream (new FileWrite("d:/zhangsan.haha"));

byte[] buf=new byte[1024];

int len;

len=bis.read(buf);

while(-1 != len){

bos.write(buf,0,len );

len=bis.read(buf);

}

bos.flush();

bos.close();

bis.close();

}

}

转换流:

outputStreamWrite 流是把OutputStrean流转换成Writer流的流

inputStreamReader 流是把inputStrean流转换成Reader流的流

print流:

print流只有输出,没有输入

PrintWriter 输出字符    PrintStream输出字节

printWriter 与 printStream的区别:

printWriter提供了PrintStream的所有打印方法,既可以封装OutputStream,也能封装Writer.而PrintStream只能封装OutputStream类型的字节流。

标准输入输出的重定向:

编程实现将键盘输入的数据输入到A文件中,如果输入有误,则把出错信息输出到B文件中。

eg:

public class test{

public static void main(String[] args){

PrintStream psOut=null;

PrintStream psError=null;

Scanner sc=null;

try{

psOut=new PrintStream("d:/Out.txt");

psError=new PrintStream("d:/error.txt");

sc=new Scanner(System.in);

int num;

System.setOut(psOut);

System.setErr(psError);

while(true){

num=sc.nextInt();

System.out.println(num);

}

}

catch(Exception e){

System.out.println("出错信息是:");

e.printStackTrace();

}

}

}

}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值