时间:2021-05-20
什么是流?
流:程序和设备之间连接起来的一根用于数据传输的管道,流就是一根管道。
流的分类:
按数据流的方向不同可以分为输入流和输出流。
按处理数据单位不同可以分为字节流和字符流。(一个字符是两个字节)
按功能不同可以分为节点(原始)流和处理(包裹)流。
字节流 字符流
输入流 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();}}}}总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
我们今天来聊下如何做实时通讯(先给知识点,实现原理,最后给出实现实时通信的具体代码--使用工具androidstudio)现在先说下用到的知识点:java的so
泛型是Java中一个非常重要的内容,对于Java进阶学习是必须要掌握的知识点之所以说这个知识点重要,如果你有过阅读过一些开源框架的代码,那你一定会看到源码中有很
复制代码代码如下:/***知识点1:ListViewitem:两种长按弹出菜单方式*知识点2:ListViewSimpleAdapter的使用*知识点3:在ja
  对于互联网时代来说,我们需要掌握很多知识点才能待得更久,这样也不容易被社会淘汰。比如说我们现在需要掌握好很多有关于域名的相关知识点,像n
一、要完成这个程序需要了解的知识点:1、编写简单的Java程序,比如helloworld---废话了。。。。哈哈2、了解java的文件操作3、了解java的bu