流式I/O和文件

1、普通输入输出类

1.1    InputStream类型:用来表示从不同数据源产生输入的类,数据源包括

字节数组

String对象

文件

管道:工作方式与实际管道相似,从一端输入,从另一端输出;

一个由其他种类的流组成的序列,以便可以将它们收集合并到一个单一的流内;

1.1.1    每一种数据源都有相应的InputStream子类。

1.1.2    FilterInputStream也属于一种InputStream,为“decorator”类提供基类,而“decorator”类可以把属性或有用的接口与输入流连接在一起

1.1.3    InputStream的子类

子类
功能

构造器参数

ByteArrayInputStream
允许将内存的缓冲区当作InputStream使用
 

StringBufferInputStream

将String转换为InputStream

 

FileInputStream

用于从文件中读取信息

 

PipedInputStream

产生用于写入相关PipedOutputStream

 

SequenceInputStream

将两个或多个InputStream对象转换成单一InputStream

 

FilterInputStream

作为修饰器的接口,其中,修饰器为其他的InputStream类提供有用功能

 

1.2    OutputStream类型:用来把产生的数据源输出到不同的数据源中,这些数据源包括

字节数组(非字符串)

文件或管道

1.2.1    OutputStream的子类


子类

功能

构造器参数

ByteArrayOutputStream

在内存中创建缓冲区,所有送往stream的数据都要放置在此缓冲区

 

FileOutputStream

用于将信息写至文件

 

PipedOutputStream

传送输出流可以连接到传送输入流,以创建通信管道。传送输出流失管道的发送端

 

1.3    FilterInputStream类:能够完成两件完全不同的事情


功能

构造器参数

DataInputStream

与DataOutputStream搭配使用,故可安装可移植方式从流读取基本数据类型(int,char,long)

 

BufferedInputStream

使用它可以防止每次读取是都得进行实际写操作

 

LineNumberInputStream

跟踪输入流中的行数,可调用getLineNumber()和setLineNumber(int)读取和设置行号

 

PushbackInputStream

具有“one byte push-back buffer”,因此可以将读到的最后一个字符回退

 

1.4    FilterOutputStream类



功能

构造器参数

DataOutputStream

与DateInputStream搭配使用,可以按照可移植方式向流中写入基本类型数据(int,char,long)

 
PrintStream
用于产生格式化输出,其中DataOutputStream处理数据的存储,PrintStream处理显示

 

BufferedOutputStream

使用它可以避免每次发送数据时都要进行实际的写操作,代表“使用缓冲区”,可以调用flush()清空缓冲区

 
时间: 2024-10-12 13:52:44

流式I/O和文件的相关文章

使用spreadsheet-reader流式读取超大excel文件

github:https://github.com/nuovo/spreadsheet-reader 最近有一个读取超大excel文件的功能需求,使用的phpexcel,有严重的内存泄露问题,暂时还未找到解决方案. spreadsheet-reader是流式读取excel的,对于大多数格式的excel都能正常的读取,且内存消耗很小. PS:其中遇到的坑 xlsx文件一定要标准,也就是必须是offce生成的,而不是wps之类的--被这个坑了很久 如果不正确会出现如下报错,个人猜测是文件头问题,建议

支持文件的流式压缩/解压IP*Works! Zip

IP*Works! Zip是为应用程序添加压缩功能的完全可控件组件包.使用简单.速度快并且效率很高,是一个为桌面和网上应用程序添加压缩和解压缩功能的组件套包./n software IP*Works! Zip支持Zip.Tar.Gzip 和 Jar压缩标准,特别的,它支持流式压缩.加密压缩,在压缩包里就可以直接删除文件.我们目前提供完全可控的纯C# .NET组件.纯Java Beans. 产品特征: IP*Works! Zip基于纯C#代码,是完全可控的.NET组件,不依赖于任何外部代码.是完全

PHP流式读取XML文件

之前在项目中有读取XML的需求,一开始采用的是simplexml将xml文件全部load到内存里,然后一个节点一个节点读的方式,后来随着XML文件的增大,内存被撑爆了.于是赶紧想办法,于是有了流式读取.一开始老大给了我一个封装XMLReader的类,但是我发现这个类不是很符合我的要求,于是又把XMLReader按我的要求重新封装了一遍,在此感谢老大moon. 目前我的类非常简单就提供几个方法,我提供了Demo供大家参考使用.话不多说上代码 ? 1 2 3 4 5 6 7 8 9 10 11 12

golang gin框架中实现大文件的流式上传

一般来说,通过c.Request.FormFile()获取文件的时候,所有内容都全部读到了内存.如果是个巨大的文件,则可能内存会爆掉:且,有的时候我们需要一边上传一边处理. 以下的代码实现了大文件流式上传. 还非常不完美,但是可以作为参考: upload.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>up

静态布局、自适应布局、流式布局、响应式布局、弹性布局简析

近期学习,有很多感想,有时候看似相近的概念,其实意义却不相同.所以学习要针对不同的名词有明确的区分意识. 抽空时间,打算学习下display:flex;本以为就是一个小小的知识点,正式去研究的时候,才发现display:flex;有很多内容,能实现很多效果.比如三栏布局(左右两栏固定,中间栏自适应),圣杯布局. 后来想着经常听到流式布局,自适应布局,响应式布局,他们有什么区别呢,就去搜了许多内容查看,才发现每种布局都有优缺点和不同使用场景. 静态布局:给页面元素设置固定的宽度和高度,单位用px,

android流式布局热门标签的实现

在日常的app使用中,我们会在android 的app中看见热门标签等自动换行的流式布局,今天就为大家分享一种android流式布局的实现. 先看最终效果 自定义流式布局的实现 package com.sunny.flowlayout.view; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.util.AttributeSet; import an

互联网影音Steam流式传输-网络直播点播

什么是stream流式传输 流式传输定义很广泛,现在主要指通过网络传送流媒体(如视频.音频)的技术总称.其特定含义为通过Internet 将影视节目传送到PC机,移动端Pad,安卓手机,苹果手机及网络机顶盒(OTT-TV或IPTV的具体应用). 我们也常见一个词"串流",也就是流式传输的一种形象说法.就是指一连串的影像资料压缩后,经过网络分析分段传送资料,在网络上即时传输影音以供观赏的一种技术和过程:串流传输可传送现场live影音或预存与服务器上的影片,当观看者在收看这些影音档时,影音

自定义流式布局

1.概述 何为FlowLayout,就是控件根据ViewGroup的宽,自动的往右添加,如果当前行剩余空间不足,则自动添加到下一行.有点所有的控件都往左飘的感觉,第一行满了,往第二行飘~所以也叫流式布局.Android并没有提供流式布局,但是某些场合中,流式布局还是非常适合使用的,比如关键字标签,搜索热词列表等,比如下图: 这些都特别适合使用FlowLayout 2.简单的分析 1.对于FlowLayout,需要指定的LayoutParams,我们目前只需要能够识别margin即可,即使用Mar

从Storm和Spark Streaming学习流式实时分布式计算系统的设计要点

0. 背景 最近我在做流式实时分布式计算系统的架构设计,而正好又要参见CSDN博文大赛的决赛.本来想就写Spark源码分析的文章吧.但是又想毕竟是决赛,要拿出一些自己的干货出来,仅仅是源码分析貌似分量不够.因此,我将最近一直在做的系统架构的思路整理出来,形成此文.为什么要参考Storm和Spark,因为没有参照效果可能不会太好,尤其是对于Storm和Spark由了解的同学来说,可能通过对比,更能体会到每个具体实现背后的意义. 本文对流式系统出现的背景,特点,数据HA,服务HA,节点间和计算逻辑间