Java中流的有关知识点详解

发布时间:2020-09-17 03:50:59

来源:脚本之家

阅读:103

作者:mumu1998

什么是流?

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

流的分类:

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

文件流

缓冲流

转换流

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

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();

}

}

}

}

总结

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

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

  1. java 复合_Java复合语句的使用方法详解

    与 C 语言及其他语言相同, Java 语言的复合语句是以整个块区为单位的语句,所以又称为块语句.下面我们来看看有关复合语句的使用方法和实例. 复合语句由开括号"{"开始,闭括号& ...

  2. java 深拷贝_java 深拷贝与浅拷贝机制详解

    java 深拷贝与浅拷贝机制详解 概要: 在Java中,拷贝分为深拷贝和浅拷贝两种.java在公共超类Object中实现了一种叫做clone的方法,这种方法clone出来的新对象为浅拷贝,而通过自己定 ...

  3. 希尔排序基础java代码_java 算法之希尔排序详解及实现代码

    摘要:这篇Java开发技术栏目下的"java 算法之希尔排序详解及实现代码",介绍的技术点是"希尔排序详解.实现代码.希尔排序.Java.实现.代码",希望对大 ...

  4. java 可见性_Java并发编程-volatile可见性详解

    前言 要学习好Java的多线程,就一定得对volatile关键字的作用机制了熟于胸.最近博主看了大量关于volatile的相关博客,对其有了一点初步的理解和认识,下面通过自己的话叙述整理一遍. 有什么 ...

  5. java 搜索_Java实现搜索功能代码详解

    首先,我们要清楚搜索框中根据关键字进行条件搜索发送的是Get请求,并且是向当前页面发送Get请求 //示例代码 请求路径为当前页面路径 "/product" 当我们要实现多条件搜索 ...

  6. csdn java社区_java中的io系统详解 - ilibaba的专栏 - 博客频道 - CSDN.NET

    Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 U ...

  7. java装饰模式_Java装饰者模式实例详解

    本文实例讲述了Java装饰者模式.分享给大家供大家参考,具体如下: 装饰模式 在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 装 ...

  8. dsa的java实现_Java数字签名算法DSA实例详解

    本文实例讲述了Java数字签名算法DSA.分享给大家供大家参考,具体如下: 一.介绍 DSS:Digital Signature Standard 数字签名标准 DSA:Digital Signatu ...

  9. switch java 语法_Java编程—switch语句语法详解

    5.3.2 switch语句 switch关键字的中文意思是开关.转换的意思,switch语句在条件语句中特别适合做一组变量相等的判断,在结构上比if语句要清晰很多. switch语句的语法格式为: ...

最新文章

  1. 【牛客网】最长对称子串
  2. 几个表示“光”的概念
  3. _ISD-SMG518L2CT-F 海康威视测温人脸安检门 温度精度±0.5℃ 人脸抓拍金属探测
  4. Enterprise Library 2.0 -- Caching Application Block
  5. 计算机包括桌面计算机和便携式计算机,()计算机包括桌面计算机和便携式计算机这两种形式...
  6. 透过微信应用号,看HTML5与Native进入融合时代
  7. 计算机视觉与深度学习 | 遗传算法(GA)的MATLAB实现(源代码)
  8. 第十七章 特殊成员_类的函数指针
  9. 中小企业邮件系统选型攻略
  10. 【Leetcode - 172】阶乘后的零(思维)
  11. linux命令里的xz是干嘛的,linux xz命令详解
  12. Security+ 学习笔记6 了解漏洞的类型
  13. c++ 智能指针的问题_窥见C++11智能指针
  14. DbgView 无法开启Capture Kernel问题
  15. 不管怎么换相,电机始终反转 。这是怎么回事?
  16. aws-sdk for JavaScript 官方api文档
  17. 关于Document类型的总结
  18. 基于STM32的智能抽油烟机系统
  19. keyshot局部打光_KeyShot新手的第一次打光,无脑三点打光塑造模型质感
  20. 举个简单例子说明条件独立

热门文章

  1. ChatGPT惊人语录大赏
  2. Error 1053: The service did not respond to the start or control request in a timely fashion.问题排查
  3. python作业网站_怒刷python作业-WEB资讯专栏-DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录....
  4. POJ ZOJ题目分类
  5. 猿辅导:一个班主任老师的影响力能有多大?
  6. 了解如何通过简单的技巧在Photoshop或GIMP中制作HDR图像
  7. 入门PCB设计AD9学习笔记8-PCB布板规则
  8. RK3288平台 SPI接口调试步骤
  9. 公有云历史故障汇总(2017-2021 阿里云/腾讯云/AWS厂商)
  10. python中bool啥意思_python中的bool是什么意思