Java中流的有关知识点详解
作者:mumu1998 发布时间:2022-07-21 15:38:21
什么是流?
流:程序和设备之间连接起来的一根用于数据传输的管道,流就是一根管道。
流的分类:
四大基本抽象流(输入流,输出流,字符流,字节流)
文件流
缓冲流
转换流
数据流 流一定是类,但类不一定是流
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();
}
}
}
}
来源:https://blog.csdn.net/mumu1998/article/details/81670581


猜你喜欢
- Room其实就是一个orm,抽象了SQLite的使用,但是它作为Android的亲儿子orm,并且原生支持LiveData和Rxjava嵌套
- 如下所示:import java.util.ArrayList;//java中申请不定长度数组public class Test01 {pu
- 通过一个变量控制线程中断代码:package com.itsoku.chat05;import java.util.concurrent.T
- 记得上学的时候学习英语,每个英语老师说到英语翻译的时候都会说英语翻译要做到“信、达、雅”。如今做了一名程序员竟然体会我还是想用这三种境界来要
- 今天被数据大神说了,对接第三方接口返回的json字段我想用驼峰形式,他说我这样不专业。所以就改了,认怂。记住以后再次对接rest接口,返回的
- 下载UEditorhttps://ueditor.baidu.com/website/download.html下载完整源码和JSP版本Sp
- 😜shape属性详解<?xml version="1.0" encoding="utf-8"?
- 今天要介绍一个概念,对象的克隆。本篇有一定难度,请先做好心理准备。看不懂的话可以多看两遍,还是不懂的话,可以在下方留言,我会看情况进行修改和
- 提到迭代器我们不能不想到迭代器模式,那我就以迭代器模式作为开场白.在我们的应用程序中常常有这样一些数据结构:它们是一个数据的集合,如果你知道
- 文档中的设置有序或无序列表是一种反应内容上下级关系或者内容相同属性的方式,与单纯的文字叙述相比,它能有效增强文档内容的条理性,突出重点。因此
- NullPointerException是当您尝试使用指向内存中空位置的引用(null)时发生的异常,就好像它引用了一个对象一样。当我们声明
- 由于一个线程的程序,如果调用一个功能是阻塞的,那么就会影响到界面的更新,导致使用人员操作不便。所以往往会引入双线程的工作的方式,主线程负责更
- 谷歌官方推出了一种侧滑菜单的实现方式(抽屉效果),即 DrawerLayout,这个类是在Support Library里的,需要加上and
- 具体实现方式不多说了,请看下文一、前言当下微信公众号几乎已经是每个公司必备的,但是大部分微信公众账号用户体验都欠佳,特别是涉及到用户绑定等,
- 游戏中有时候会见到图片轮播的效果,那么这里就自己封装了一个,包括自动轮播、切页按钮控制、页码下标更新、滑动轮播、切页后的回调等等 。下面,先
- Android设备之间可以除了通过wifi热点共享上网,还可以通过蓝牙共享上网,后面这个功能很少人使用,但适合某台设备没有wifi却有蓝牙的
- OpenGL ES是 OpenGL三维图形API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。 Ophone目前支持OpenGL
- 具体代码如下所示:package com.example.studyapplication.fragment;import android.
- Android studio开发工具中,如何如何删除Android项目,下面是在Android studio 1.5正式版删除Android
- 本文的主要内容包括在下图,下面来一起看看吧。1、&和&&的区别2、switchswitch语句能否作用在byte,能