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
猜你喜欢
- 直接用idea clean install 进行打包maven项目时,如果没有进行设置会把测试文件也打包进去。想要忽略test文件将Mave
- Java——获取字符串编码格式判断一个字符串的编码格式: public static St
- switch结构(开关语句)的语法switch(表达式 ){--->类型为int、char case 常量1 :---&g
- 这是Hadoop学习全程记录第1篇,在这篇里我将介绍一下如何在Linux下安装Hadoop1.x。先说明一下我的开发环境:虚拟机:VMwar
- 1、java.util.concurrent.atomic 的包里有AtomicBoolean, AtomicInteger,AtomicL
- 由于之前一直在使用spring-boot开发,但一直苦恼于不知道如何利用debug调试代码.在网上查找了很多文章之后。学习之余决定把spri
- 前言:mongodb是一个基于分布式文件存储的开源数据库系统。mongodb与我们平常使用的mysql的区别: 1.
- SpringBoot2之PUT请求接收不了参数的解决办法,这个问题,关乎两个Filter过滤器,是spring3和3.5之后提供的,目的就是
- 知道弱引用和软引用的概念与如何使用它们是两码事,引用类在垃圾回收工作的过程中有重要作用。我们都知道垃圾回收器会回收符合回收条件的对象的内存,
- 今天介绍一个实用的小知识点,如何将List转为Map<Object, List<Object>>1. 基本写法最开始
- 本文实例讲述了C#生成单页静态页简单实现方法。分享给大家供大家参考。具体方法如下:protected void BtGroup_Server
- 导入mybatis jar包右键pom.xml模拟springboot底层实现类1.定义接口@Mapperpublic interface
- 前言悬浮窗是一种比较常见的需求。例如把视频通话界面缩小成一个悬浮窗,然后用户可以在其他界面上处理事情。本文给出一个简单的应用内悬浮窗实现。可
- 一、遇到一个问题1、读取CSV文件package com.guor.demo.charset;import java.io.Buffered
- 匿名类类型类可以是匿名的 - 也就是说,可以在没有 identifier 的情况下声明类。在将类名称替换为 typedef 名称时,这会很有
- using System; using System.Collections.Generic; using
- 1、问题描述几种代码写法会有不同的ID返回值,下面我们一一分析。2、问题分析 首先一种插入写法,源码如下:SysUser .java/**
- 一、前言前面我们讲了Java的入门知识,相信许多小伙伴对Java基础有一个大概的认识了,这也为我们后续的学习打下了基础,所以我们可以继续学习
- 在java里, 我们可以使用Executors.newFixedThreadPool 来创建线程池, 然后就可以不停的创建新任务,并用线程池
- Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)用户线程即运行在前台的线程,而守护线程是运行