网络程序所做的工作大部分都是简单的输入和输出:将数据字节从一个系统移动到另一个系统。很大程度上来说,读取服务器发送给你的数据和读取文件没有什么不同。java的I/O是建立在流之上的。

用输入流读取数据,用输出流写入数据。针对不同的数据源,java提供不同的流比如说:FileInputStream ,TelnetOutPutStream等。

java提供过滤器流,可以修改数据或者只是提供额外的方法,也提供阅读器reader和书写器 writer,允许读取字符而不是字节。IO流的类结构图

可以看出流

按输入输出的类型可以分成字节流(outputstream/inputStream)和字符流。(reader/writer)

按照流向可以分成输出流。(outputstream/writer) 和输入流(reader/inputStream);

按照功能可以分成节点流和处理流。

节点流就是直接操作文件 、网络比如说fileinputStream ,teletoutputstream;

常用的节点流

  1.   父 类 InputStream OutputStream Reader Writer
  2.   文 件 *FileInputStream FileOutputStrean FileReader FileWriter 文件进行处理的节点流
  3.   数 组 *ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter 对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)
  4.   字符串 *无  无 StringReader StringWriter 对字符串进行处理的节点流
  5.   管 道 *PipedInputStream PipedOutputStream PipedReader PipedWriter 对管道进行处理的节点流

处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。

  1. 父 类 InputStream OutputStream Reader Writer
  2.   缓冲流 *BufferedImputStrean BufferedOutputStream BufferedReader BufferedWriter ----需要父类作为参数构造,增加缓冲功能,避免频繁读写硬盘,可以初始化缓冲数据的大小,由于带了缓冲功能,所以就写数据的时候需要使用flush方法咯
  3.   转换流 *InputStreamReader OutputStreamWriter- 要inputStream或OutputStream作为参数,实现从字节流到字符流的转换
  4.   数据流 *DataInputStream DataOutputStream -提供将基础数据类型写入到文件中,或者读取出来,为什么要有这个流呢?看这样的分析,如果没有这种流的话,有一个long,本身只占8个字节,如果我要写入到文件,需要转成字符串,然后在转成字符数组,那空间会占用很多,但是有了这种流之后就很方便了,直接将这8个字节写到文件就完了。。是不是既节约了内存空间有让程序写起来更加方便简单了呐。写倒是很简单,但是读取的时候就注意了,根据读取的数据类型,指针会往下移,所以你写的顺序必须要和读的顺序一致才能完成你正确的需求。

流是同步的,当程序请求一个流读写一段数据的时候,在做任何其他操作之前,它要等待所读/写的数据。java还支持用通道和缓冲区的非阻塞的IO。

转载于:https://www.cnblogs.com/CongLollipop/p/6610842.html

java网络编程--流相关推荐

  1. JAVA 网络编程流相关代码(UDP和TCP)

    UDP传输 UDP传输示例代码1 功能需求:通过udp传输方式,将一段文字数据发送出去. 定义一个udp发送端. 思路: 1,建立updsocket服务. 2,提供数据,并将数据封装到数据包中. 3, ...

  2. 【Java网络编程与IO流】Java之Java Servlet详解

    Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...

  3. 【Java网络编程与IO流】Java中IO流分为几种?字符流、字节流、缓冲流、输入流、输出流、节点流、处理流

    Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...

  4. java网络编程 个人笔记 第二章 流

    java网络编程 个人笔记 第二章 流 流 I/O介绍 java流式输入/输出原理 输入输出流分类 节点流和处理流 节点流的类型 处理流的类型 InputStream(输入流) InputStream ...

  5. java 密钥工厂 desede_20145212 实验五《Java网络编程》

    20145212 实验五<Java网络编程> 一.实验内容1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代 ...

  6. Java学习总结:52(Java网络编程)

    Java网络编程 开发第一个网络程序 java.net包提供了网络编程有关的开发工具类,在此包中有一下两个主要的核心操作类. ServerSocket类:是一个封装支持的TCP协议的操作类,主要工作在 ...

  7. 【Java】 Java网络编程总结

     一.网络编程三要素: IP地址:每个设备在网络中的唯一标识. 端口号:每个程序在设备上的唯一标识. 协议:为计算机网络中进行数据交换而建立的规则或约定的集合. UDP: 面向无连接,数据不安全,速度 ...

  8. NIO详解(一):java网络编程IO总结(BIO、NIO、AIO)

    1.基本概念 在Java网络通信中,最基本的概念就是Socket编程了.Socket又称"套接字" 向网络发出请求或者应答网络请求. Socket 和ServerSocket类库位 ...

  9. 04.Java网络编程(转载)

    1.网络编程 1.1计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. 按照计算机网络的定义,通过一定的物理设备将处于不同位置的计算机连接起来组成的网络,这个网络中包含 ...

最新文章

  1. sql server 备份与恢复系列一 必备知识
  2. boost::geometry::clear用法的测试程序
  3. dx postprocess
  4. php输入安全验证漏洞,PHP 输入验证错误漏洞
  5. eclipse怎么配置python解释器,在Eclipse中配置Pydev Interpreter以使用Enthought Python分发...
  6. Javascript算法:非固定宽度滑动窗口算法
  7. VMware vSphere 服务器虚拟化之十八桌面虚拟化之安装View Composer服务器
  8. nyoj Splits the string 749
  9. Android Studio躲避小球小游戏(一界面布局)
  10. 元胞自动机概念与实例
  11. 关于交换机包转发率1.488Mpps是如何计算出来的?
  12. 【转】几个期货基本面因子的研究
  13. 使用.net 操作 微信公众平台 —— 接收用户操作 —— 关注/取消关注 公众号
  14. leetcode5454
  15. hihihi,我又回来啦!今天分享的是2021:【例4.6】最大公约数 代码如下
  16. 解决提交到github报错Please tell me who you are.和为不同的项目设置不同的名称
  17. 避坑,职场远离PUA,PUA常见的套路与话术你得了解一下!
  18. Java基础练习题 1-50
  19. VOBSub字幕合并命令行的实现
  20. 基于Arduino的公交车报站器

热门文章

  1. 软件测试基础知识【归纳】
  2. 软件测试基础:自动化测试、安全测试、性能测试
  3. 人声处理_科唛课堂——人声的音频后期处理
  4. 微型计算机 持续更新,2020年南京邮电大学810《微机原理及应用》硕士研究生入学考试大纲...
  5. access vba 常量数组赋值_09c语言数组详解
  6. Java高并发编程详解-代码在本地
  7. matlab堆栈的思想,[转载]Matlab源代码:堆栈类Stack的实现
  8. Python 基础知识 D7
  9. MATLAB关于Mesh的相关命令
  10. mybatis都有哪些executor执行器_Mybatis的SqlSession创建过程详解