首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java学习笔记(基础篇)—IO流

一:流概念 Java,把一组有序数据序列称为流。 如a.txt文件拷贝到b.txtJava中流是使用统一方式操作输入和输出数据。 从文件读取,从键盘读取,从网络读取......序列化:将对象保存到文件或者传输到网络过程。 反序列化:将文件或者网络中将对象读取到程序过程。 进行序列化或者反序列化必须实现Serializable接口。...否则以前用老版本序列化恢复时会出错。 transient:该修饰属性不会被序列化。是透明属性。...返回整数表示读取字节数。参数off指定在字节数组开始保存数据起始下标,参数len指定读取字节数目。返回整数表示实现读取字节数。...通过带缓冲区输出流写数据,数据先保存在缓冲区,积累到一定程度才会真正写到输出流。缓冲区通常用字节数组实现,实际上是指一块内存空间。flush()方法强制把缓冲区内数据写到输出

93410

java学习笔记(基础篇)—IO流

反序列化:将文件或者网络中将对象读取到程序过程。 进行序列化或者反序列化必须实现Serializable接口。...否则以前用老版本序列化恢复时会出错。 transient:该修饰属性不会被序列化。是透明属性。...返回整数表示读取字节数。参数off指定在字节数组开始保存数据起始下标,参数len指定读取字节数目。返回整数表示实现读取字节数。...void close(): 关闭输入流,InputStream本身close()方法不执行任何操作。它一些子类覆盖了close()方法,close()方法释放和流有关系统资源。...通过带缓冲区输出流写数据,数据先保存在缓冲区,积累到一定程度才会真正写到输出流。缓冲区通常用字节数组实现,实际上是指一块内存空间。flush()方法强制把缓冲区内数据写到输出

81510
您找到你想要的搜索结果了吗?
是的
没有找到

JAVA面试基础「建议收藏」

Input 输入流(将外部文件读入到 Java 程序)   Output 输出流(将 Java 程序数据输出到外部)   Java 流有很多种不同分类。...() 返回当前数据流读取数据个数 void close() 关闭数据流 FileInputStream是抽象InputStream实现,构造函数可以接受File实例对象,但要保证文件存在。...是抽象OutputStream实现,构造方法可以接受File实例对象,文件不存在,会创建文件。   ...序列化和反序列化 序列化就是将内存对象输出到硬盘⽂件中保存。 反序列化就是相反操作,从⽂件读取数据并还原成内存对 象。...序列化就是将内存对象输出到硬盘文件中保存。 反序列化就是相反操作,从文件读取数据并还原成内存对象。

94620

Spark shuffle读操作

blockId等相关信息传入构造方法 读取数据 使用ShuffleBlockFetcherIterator获取输入流 反序列化输入流 添加监控 数据聚合 数据排序 总结 实现细节 设计思路 提出问题...概述 spark shuffle写操作之准备工作 ResultTask 和 ShuffleMapTask 看到,rdd读取数据是调用了其 iterator 方法。...比较简单,使用委托模式,将迭代下一个行为委托给受委托。 下面我们逐一来看三种获取数据实现细节。 通过spark 底层存储系统 其核心源码如下: ?...读取数据 迭代方法next不断去读取远程block以及本地block输入流。不做详细剖析,见 ShuffleBlockFetcherIterator.scala next 相关方法剖析。...关于聚合和排序使用,在前面文章shuffle写操作也提到了,聚合和排序是独立出来,跟shuffle处理耦合性很低,这使得shuffle读和写阶段数据内存排序聚合溢出操作处理可以重复使用

82920

百万级 Excel导入数据库 效率太低? 基于 SAX 事件模型 导入,将会解决 效率问题

基于 SAX 事件模型是一种流式读写方式,它可以直接读取 Excel 文件 XML 格式数据,并将其转换为对象模型。处理大量数据,该方式具有较高性能和较小内存占用。...实现思路: 基于 SAX 事件模型,我们可以通过 XSSFReader 获取 Excel 文件入流,并使用 XMLReader 来解析 Excel 文件 XML 数据。...获取 Excel 文件输入流,使用 OPCPackage 和 XSSFReader 读取 Excel 文件 XML 数据。...获取 Workbook 每个 Sheet XML 输入流,并使用 XMLReader 来解析 Excel 文件 XML 数据。...需要注意是,由于使用了 SAX 事件模型,需要自己实现解析事件处理程序。处理复杂 Excel 文件,可能需要编写更为复杂事件处理程序。

12510

什么是IO流_io流实现

那么JAVAIO流呢; (1).java,java就是自来水厂,水源地就是源,家就是目的 (2)....对于java程序来说,也是一样,从源地到我java流,便是输入流(InputStream),而从我java中流出便是输出流(OutputStream) (3).那么你已经知道什么是输入流(InputStream...我们知道储水池有很多种类型,那么java缓冲区自然也有很多种类型,例如以下最常用 我们已经知道InputStream是输入流,那么BufferedInputStream就是输入流缓冲区了...(1).字节流 首先:字节流可划分为两入流InputStream 输出流OutputStream 对于java来说:当对文件读取时候,使用FileInputStream;...1.字符流分为 输入流 输出流 首先:字符流可划分为两入流Reader 输出流Writer 对于java来说:当对文件读取时候,使用FileReader

66830

【C语言】深度探讨文件操作(一)

C程序针对⽂件、画⾯、键盘等数据⼊输出操作都是通过流操作。 ⼀般情况下,我们要想向流⾥写数据,或者从流读取数据,都是要打开流,然后操作。...那是因为C语言程序启动时候,默认打开了3个流: stdin - 标准输入流大多数环境从键盘输入,scanf函数就是从标准输入流读取数据。...建⽴⼀个新⽂件 “a+”(读写) 打开⼀个⽂件,⽂件尾进⾏读写 建⽴⼀个新⽂件 “rb+”(读写) 为了读和写打开⼀个⼆进制⽂件 出错 “wb+”(读写) 为了读和写,新建⼀个新⼆进制⽂件 建...格式化⼊函数 所有⼊流 fprintf 格式化输出函数 所有输出流 fread ⼆进制⼊ ⽂件 fwrite ⼆进制输出 ⽂件 注:表格每个函数名可以点击,可以为你进行更深入查找。...程序文件和数据文件,文件名构成,二进制文件和文本文件?文件打开和关闭, 流和标准流,文件指针,文件打开和关闭,⽂件顺序读写,对前面的知识利用实现简单文件拷贝。

9010

【C语言】文件操作(1)

其实我们可以理解程序文件就是我们写代码文件(其可以运行)。源程序文件是还没经历编译和链接最初始文件,而目标文件和可执行程序是源程序文件在编译,链接产生文件。...⽐如程序运⾏需要从中读取数据⽂ 件,或者输出内容⽂件,(其并不会被运行,只是拿来读写) 以前各章所处理据⼊输出都是以终端为对象,即从终端键盘⼊数据,运⾏结果显⽰到显⽰器上。...当我们打开文本文件,显示出依然是我们原来值。举个例子,比如我们将400000存入文本文件,我们打开文本文件后显示出来是400000(原数据),并不是地址形式数据。...C程序针对⽂件、画⾯、键盘等数据⼊输出操作都是通过流当中转站操作。 所以我们想要读取数据或者输入数据从某外部设备,都是必须要打开对应流才能操作。...• stdin(指向标准输入流) - 标准⼊流,⼤多数环境从键盘⼊,scanf函数就是从标准⼊流读取数据。

6610

CCPP输入输出函数汇总分析

.默认标准输入流即stdio.h定义stdin.但是从输入流读取字符又 涉及到缓冲问题,所以并不是屏幕敲上一个字符程序就会运行,一般是通过屏幕上敲上回车键,然后将回车前字符 串放在缓冲区...所指取1行字符-标准输入流(由fp=stdin所指) 原因:同上; 补充:不推荐使用,问题是调用者使用gets,不能指定缓冲区buf(用户进程)长度,这样可能造成缓冲区溢出。...;出错:返回EOF;输入出错或在任意变换前已到达文件结尾:EOF; 实现:输入流->格式转换->内存变量 sscanf(); 格式:#include int sscanf(const...返回EOF;输入出错或在任意变换前已到达文件结尾:EOF 实现:标准输入流->格式转换->内存变量。...;出错:返回-1; 实现:文件(fd)->内存向量 原因:一次函数调用读、写多个非连续缓冲区,但是这些缓冲区已经用iovec表示好了。

1.7K20

CCPP输入输出函数汇总分析

.默认标准输入流即stdio.h定义stdin.但是从输入流读取字符又 涉及到缓冲问题,所以并不是屏幕敲上一个字符程序就会运行,一般是通过屏幕上敲上回车键,然后将回车前字符 串放在缓冲区...*str) gets主要是从标准输入流读取字符串并回显,读到换行符退出,并会将换行符省去. puts() int puts(char *str) puts主要是把字符串str写到标准流stdout中去...;出错:返回NULL; 文件结尾:NULL; 实现:内存buf <-从stdin所指取1行字符-标准输入流(由fp=stdin所指) 原因:同上; 补充:不推荐使用,问题是调用者使用gets,...*restrict format,…) 成功:指定输入项数;出错:返回EOF;输入出错或在任意变换前已到达文件结尾:EOF; 实现:标准输入流->格式转换->内存变量。...返回EOF;输入出错或在任意变换前已到达文件结尾:EOF 实现:标准输入流->格式转换->内存变量

1.2K20

C语言-文件操作

C语言中,使用标准文件I/O函数(比如fprintf、fscanf、fgets、fputs等)来处理文本文件是很方便。这些函数可以直接读取和写入文本文件文本数据,并且适合于处理文本内容。...这时候就涉及到了上文所讲述数据文件存储方式,将内容简化为文字就是下图所示(以10000为例): 当放入10000实际上放入是10011100010000这个二进制序列,二进制文件显示是十六进制数字序列...通过这个指针,程序可以访问流属性和进行读写操作。标准输入流、标准输出流和标准错误流在程序启动就已经自动打开,无需额外操作。...标准输入流(stdin):标准输入流用于从程序外部读取数据,通常与键盘输入相关联。当你使用scanf等函数读取用户输入时,实际上是从标准输入流读取数据。...通过这个文件指针,程序可以对文件进行读取、写入等操作,实现了对文件间接访问和控制。 因此,虽然文件指针变量本身并不直接指向文件实际内容,但通过它可以间接地找到与其关联文件,并对文件进行操作。

7010

从Java流到Spring Cloud Stream,流到底为我们做了什么?

InputStream 常用子类如下。 ByteArrayInputStream :将字节数组转换为字节输入流,从中读取字节。 FileInputStream :从文件读取数据。...2.3 Reader Reader 是字符流输入;Reader 常用子类如下。 CharArrayReader :将字符数组转换为字符输入流,从中读取字符。...StringReader :将字符串转换为字符输入流,从中读取字符。 BufferedReader :为其他字符输入流提供读缓冲区。...FileReader :继承自InputStreamReader,该类按字符读取文件流数据。 2.4 Writer Writer 是所有字符输出流,Writer 常用子类如下。...kafkaStream:Kafka Streams是一个客户端程序库,用于处理和分析存储Kafka数据,并将得到数据写回Kafka或发送到外部系统。

1.5K20

部分Excel版本存在超烦人M函数智能提示重复输入Bug,这样搞! | PQ小技巧

很多小伙伴都安装了Office 2019或365,并且知道PQ查询选项里打上这个小狗狗,就可以实现M函数智能提示输入了: 然鹅,有的朋友发现……提示是提示了,一按tab...经测试,部分小版本Excel,会出现类似的情况,比如我下面这个: 经测试,大概分以下两种情况: 1、最常见情况:输入函数,输入了点(.)...,毕竟M函数都是分两段,先名,如“Table点……”,可能是最常用查询方式,结果,函数提示也会出错(出现了与table无关函数),选择了函数输入,也会重复点前面的内容,如“table” 2、...针对这种情况,如果你“幸运”遇到了,建议这么搞: 1、能更新的话,尽量更新Office到最新; 2、如果不能更新,参考上面的第2种情况,直接通过函数名称后面一段来实现提示输入,而不要用“前面一段+点...另一方面,实际工作,其实很容易遇到类似的小问题、bug,但只要细心尝试,往往都能找到一些解决办法。

53520

Java IO 知识整理

各IO关系梳理 InputStream: Java IO顶级字节输入流抽象,定义了最基础输入、读取相关方法。实现了Closeable接口。...PipedInputStream: 继承自InputStream管道输入流使用管道通信,必须与 PipedOutputStream 配合使用。让多线程可以通过管道进行线程间通讯。...BufferedReader: 继承自Reader带缓冲功能字符流,默认缓冲区大小是8K,从字符输入流读取文本,缓冲各个字符,从而实现字符、数组和行高效读取。...里氏替换原则:子类完全实现了父方法,且有自己个性,子类覆盖或实现方法输入参数和返回结果范围没有变化。 接口隔离原则:输入输出流所实现接口有所不同,而且接口比较细化,接口中方法少。...因此使用java IO库,必须理解java IO库是由一些基本原始流处理器和围绕它们装饰流处理器所组成。 以字节输入流为例。

52020

【c语言】详解文件操作(一)

C程序针对文件、画面、键盘等数据⼊输出操作都是同流操作。⼀般情况下,我们要想向流里写数据,或者从流读取数据,都是要打开流,然后操作。...而从键盘(stdin)输入字符会进入流,scanf函数读取这些字符保存到变量a。 那为什么我们从键盘输入数据,向屏幕上输出数据,并没有打开流呢?...那是因为C语言程序启动时候,默认打开了3个流: stdin - 标准输入流大多数环境为从键盘输入。...scanf,getchar等函数会从此流读取字符; stdout - 标准输出流,大多数环境为输出到显示器界面。printf,putchar等函数会向此流写入字符。...,列举如下: 文件打开方式 含义 如果指定文件不存在 “r”(只读) 为了⼊数据,打开一个已经存在文本文件 出错 “w”(只写) 为了输出数据,打开一个文本文件 建立一个新文件 “a”(追加) 向

5710

Java实现word、excel、ppt、txt等办公文件在线预览功能

来源 | blog.csdn.net/weixin_40986713 Java实现办公文件在线预览功能是一个大家在工作也许会遇到需求,网上些公司专门提供这样服务,不过需要收费。...如果想要免费,可以用openoffice,实现原理就是:通过第三方工具openoffice,将word、excel、ppt、txt等文件转换为pdf文件流; 当然如果装了Adobe Reader XI...我这里介绍通过poi实现word、excel、ppt转pdf流,这样就可以浏览器上实现预览了。...1.到官网下载Apache OpenOffice 安装包,安装运行 2.项目的pom文件引入依赖 <!...byte[] buff =new byte[1024]; //所读取内容使用n来接收 int n; //当没有读取,继续读取,循环 while((n=in.read

2.6K20

Bug剖析篇-Facebook 60TB+级Apache Spark应用案例

入流,返回一个迭代器(Iterator) 既然都是读取数据流,如果数据流因为某种异常原因关闭,那必然会抛出错误。...迭代器有经典hasNext/next方法,每次hasNext,我们都检查下是否有Exception(来自1,2),如果有就抛出了。既然已经异常了,我们就应该不需要继续读取这个分区数据了。...hasNext 为false情况下,有两情况,一是真的没有数据了,一是有异常了,比如有节点挂了,所以需要检测下ChildProcessorexitStatus状态。...Unresponsive driver SPARK-13279 这个Bug已经1.6.1, 2.0.0 修复。...Spark排序,指针和数据时分开存储,进行spill操作其实是把数据替换到磁盘上。但是指针数组是必须在内存里。当数据被spill后,相应,指向这些记录指针其实也是要被释放

38040

初识 Spark | 带你理解 Spark 核心抽象概念:RDD

通过读取外部文件方式生成 一般开发场景Spark 创建 RDD 最常用方式,是通过 Hadoop 或者其他外部存储系统数据集来创建,包括本地文件系统、HDFS、Cassandra、HBase...例如,需要从一个日志文件 hbase-hadoop100.out 信息,找出错报警信息,则可以使用 Transformation 操作 filter() 算子来实现: val initialRDD...此时同样立即执行文件信息筛选操作,错误报警信息返回。 2.2.2....如果不引入惰性计算机制,读取文件就把数据加载到内存存储起来,然后生成 errorRDD,马上筛选出错报警信息内容,等筛选操作执行完成后,又只要求返回第一个结果。这样做是不是太浪费存储空间?... Scala ,函数创建可以通过匿名函数 Lambda 表达式或自定义 Function 两种方式实现

1.4K31

c++istream超详细说明

根据前文,istream是c++标准输入流一个基,本篇详细介绍istream主要成员函数用法。...(); //从输入流读取一个字符并存储引用参数__C,如果遇到文件结束符,则__C为eof(),返回this指针 __istream_type& get(char_type...& __c); //从输入流读取字符存储__s指向内存,直到输入流读取完或者读到了__n-1个字符才返回,其中如果在读取字符过程遇到了__delim所代表字符,则提前返回,也就是说...__s指向内存,直到输入流读取完或者读到了__n-1个字符才返回,其中如果遇到换行符,则提前返回,从实现看,可见就是上面那个函数终止字符是换行符 __istream_type&...7.putback函数、unget函数、sync函数 函数原型如下: //将前面从输入流读取字符__C返回到输入流,插入到当前指针位置,注意返回字符一定要是之前读取,否则是不起作用

1.3K30
领券