Data Streams支持 primitive 数据类型以及字符串类型的字节流I/O,所有的Data Stream 类都实现了DataInput 与DataqOutput 这两个接口,在实现这两个接口的类中最为常用是:DataInputStream,DataOutputStream。官方文档的例子:
package io.datastream; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.EOFException; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class DataStreams { static final String dataFile = "D:\\360云盘\\javase\\src\\io\\invoicedata"; static final double[] prices = { 19.99, 9.99, 15.99, 3.99, 4.99 }; static final int[] units = { 12, 8, 13, 29, 50 }; static final String[] descs = { "Java T-shirt", "Java Mug", "Duke Juggling Dolls", "Java Pin", "Java Key Chain" }; public static void main(String[] args) throws IOException { DataOutputStream out = null; try { out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(dataFile))); for (int i = 0; i < prices.length; i++) { out.writeDouble(prices[i]); out.writeInt(units[i]); out.writeUTF(descs[i]); } } catch (Exception e) { e.printStackTrace(); } finally { if (out != null) { out.close(); } } // ========================= Read the file ============ DataInputStream in = null; double price; int unit; String desc; double total = 0.0; try { in = new DataInputStream(new BufferedInputStream(new FileInputStream(dataFile))); try { while (true) { price = in.readDouble(); unit = in.readInt(); desc = in.readUTF(); System.out.format("You ordered %d" + " units of %s at $%.2f%n", unit, desc, price); total += price * unit; } } catch (EOFException e) { e.printStackTrace(); } System.out.format("Total amount %.2f", total); } catch (Exception e) { e.printStackTrace(); } finally { in.close(); } } }
这段代码是先将3个分别存放着相同个数,不同primitive类型或字符串类型的数组的数据写到invoicedata文件中,然后再将这些数据从文件中读出。上面这段代码的运行结果为:
运行结果1:
You ordered 12 units of Java T-shirt at $19.99
You ordered 8 units of Java Mug at $9.99
You ordered 13 units of Duke Juggling Dolls at $15.99
You ordered 29 units of Java Pin at $3.99
You ordered 50 units of Java Key Chain at $4.99
java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:197)
at java.io.DataInputStream.readLong(DataInputStream.java:416)
at java.io.DataInputStream.readDouble(DataInputStream.java:468)
at io.datastream.DataStreams.main(DataStreams.java:51)
Total amount 892.88
You ordered 8 units of Java Mug at $9.99
You ordered 13 units of Duke Juggling Dolls at $15.99
You ordered 29 units of Java Pin at $3.99
You ordered 50 units of Java Key Chain at $4.99
java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:197)
at java.io.DataInputStream.readLong(DataInputStream.java:416)
at java.io.DataInputStream.readDouble(DataInputStream.java:468)
at io.datastream.DataStreams.main(DataStreams.java:51)
Total amount 892.88
上面得到的结果都是正常的,但是如果将上面的代码稍作改动:
package io.datastream; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.EOFException; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class DataStreams { static final String dataFile = "D:\\360云盘\\javase\\src\\io\\invoicedata"; static final double[] prices = { 19.99, 9.99, 15.99, 3.99, 4.99 }; static final int[] units = { 12, 8, 13, 29, 50 }; static final String[] descs = { "Java T-shirt", "Java Mug", "Duke Juggling Dolls", "Java Pin", "Java Key Chain" }; public static void main(String[] args) throws IOException { DataOutputStream out = null; DataInputStream in = null; double price; int unit; String desc; double total = 0.0; try { out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(dataFile))); for (int i = 0; i < prices.length; i++) { out.writeDouble(prices[i]); out.writeInt(units[i]); out.writeUTF(descs[i]); } // ========================= Read the file ===================== in = new DataInputStream(new BufferedInputStream(new FileInputStream(dataFile))); try { while (true) { price = in.readDouble(); unit = in.readInt(); desc = in.readUTF(); System.out.format("You ordered %d" + " units of %s at $%.2f%n", unit, desc, price); total += price * unit; } } catch (EOFException e) { e.printStackTrace(); } System.out.format("Total amount %.2f", total); } catch (Exception e) { e.printStackTrace(); } finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } }
将读取文件的代码移动写入文件代码片段后面,而且是在同一个try里面,也就是在outputstream关闭之前读取,其结果:
相关推荐
HadoopCon2016-Apache-Flink-Tutorial-DataStream-API
资源来自pypi官网。 资源全名:datastream-0.1.1.tar.gz
资源来自pypi官网。 资源全名:pytorch_datastream-0.3.8-py36-none-any.whl
@ auroradao / datastream-client 此monorepo提供了必要的程序包,可轻松将Javascript / Typescript应用程序连接到IDEX Datastream API。 它包括各种连接器,可让您根据您的环境选择最佳的WebSocket实现。 客户端...
阿里云Blink DataStream开发,集成datahub,通过blink 获取datahub相关数据,将数据进行转化成对象,由于实时数据是binlog日志,所以对数据进行过滤,数据输出时需要将对象转化成json对象提供给下游,所以集成了...
vicon-datastream-sdk 具有cmake支持的非正式VICON DataStream SDK 从1.8.0版开始,VICON DataStream SDK在MIT许可下可用。 这个非正式的分支包含SDK以及对cmake构建系统的支持,可轻松集成到基于cmake的项目中。 您...
包括java8,es,flink等学习(java和scala,可以阅读源码) 见: flink-table-common:通过自定义函数、格式等扩展表生态系统的通用模块。 flink-table-api-java:使用 Java 开发 Table & SQL API 依赖(早期开发...
javac DataStream.java javac Row.java 然后您可以通过以下方式启动 ECL: ecl run data-stream.ecl --target hthor --server=localhost:8010 您应该看到以下输出: <Row><value>row</value></Row> <Row>...
datastream 7i overview
Datastream7i的帮助文件
用于水质数据的DataStream开放数据模式下载 , , 和模板格式的最新版本。数据流DataStream( )是用于共享水质数据的在线开放访问平台。 数据在DataStream的开放数据模式中上载,存储和共享,开放数据模式是基于WQX...
基于Flink CDC使用datastream方式全量增量同步mysql to mysql 使用的是java语言,只需配置完源数据库和目标数据库信息,运行MysqlCDC中的main函数,即可实现多库多表同步。
Datastream Pro是一个用户友好的100%纯Java桌面应用程序,旨在同时连接到多个RDBMS系统。 轻松浏览和维护数据库中的数据,编写查询并执行数据库实体维护。
Datastream金融数据库使用
DATASTREAM帮助文档,注意这个可是老版本
Flink Doris Connector(apache-doris-flink-connector-1.14_2.12-1.0.3-incubating-src.tar.gz) Flink Doris Connector Version:1.0.3 Flink Version:1.14 Scala Version:2.12 Apache Doris是一个现代MPP...
GoSDK 设备云平台主要提供Restful方式的接口供开发者调用。 接入设备云请进入 了解相关文档。 传送门: API调用基础地址为: ... ret, s := on.DatapointAdd("66114", "datastream_id1", datapoints) if ret == t
火炬灯笼模板 用于项目模板。 用法 安装和: pip install cookiecutter ...设置项目: ...cd poetry install ...datastream 调整problem的数据以进行培训和评估。 以自然形式保存数据。 在火车中分割火车数据
Flink官网实例: 1.基于DataStream API 实现欺诈检测,完整实现; 2.补充自定义数据源; 3.IDEA开发环境。