Java IO: OutputStream

转载自     Java IO: OutputStream

译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

OutputStream类是Java IO API中所有输出流的基类。子类包括BufferedOutputStream,FileOutputStream等等。参考Java IO概述这一小节底部的表格,可以浏览完整的子类的列表。

输出流和目标媒介

输出流往往和某些数据的目标媒介相关联,比如文件,网络连接,管道等。更多细节请参考Java IO概述。当写入到输出流的数据逐渐输出完毕时,目标媒介是所有数据的归属地。

Write(byte)

write(byte)方法用于把单个字节写入到输出流中。OutputStream的write(byte)方法将一个包含了待写入数据的int变量作为参数进行写入。只有int类型的第一个字节会被写入,其余位会被忽略。(译者注:写入低8位,忽略高24位)。

OutputStream的子类可能会包含write()方法的替代方法。比如,DataOutputStream允许你利用writeBoolean(),writeDouble()等方法将基本类型int,long,float,double,boolean等变量写入。

这是一个OutputStream的write()方法例子:

OutputStream output = new FileOutputStream("c:\\data\\output-text.txt");
while(hasMoreData()) {int data = getMoreData();output.write(data);
}
output.close();

这个例子首先创建了待写入的FileOutputStream。在进入while循环之后,循环的判断条件是hasMoreData()方法的返回值。hasMoreData()方法的实现不予展示,请把这个函数理解为:当有剩余可写数据时,返回true,否则返回false。

请注意,为了清晰,这里忽略了必要的异常处理。想了解更多异常处理的信息,请参考Java IO异常处理。

write(byte[])

OutputStream同样包含了将字节数据中全部或者部分数据写入到输出流中的方法,分别是write(byte[])和write(byte[], int offset, int length)。

write(byte[])把字节数组中所有数据写入到输出流中。

write(byte[], int offset, int length)把字节数据中从offset位置开始,length个字节的数据写入到输出流。

flush()

OutputStream的flush()方法将所有写入到OutputStream的数据冲刷到相应的目标媒介中。比如,如果输出流是FileOutputStream,那么写入到其中的数据可能并没有真正写入到磁盘中。即使所有数据都写入到了FileOutputStream,这些数据还是有可能保留在内存的缓冲区中。通过调用flush()方法,可以把缓冲区内的数据刷新到磁盘(或者网络,以及其他任何形式的目标媒介)中。

close()

当你结束数据写入时,需要关闭OutputStream。通过调用close()可以达到这一点。因为OutputStream的各种write()方法可能会抛出IO异常,所以你需要把调用close()的关闭操作方在finally块中执行。这是一个OutputStream调用close()的例子:

OutputStream output = null;
try{output = new FileOutputStream("c:\\data\\output-text.txt");while(hasMoreData()) {int data = getMoreData();output.write(data);}
} finally {if(output != null) {output.close();}
}

  

这个例子在finally块中调用close()方法。虽然这种方式可以确保OutputStream关闭,但却不是一个完美的异常处理方案。我在Java IO异常处理这文章中更加详细地探讨了IO的异常处理。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pg和oracle比较,Oracle与PostgreSQL使用差异对比与总结

JDBC连接:Oracle的jdbc连接字符串:db.urljdbc:oracle:thin:192.168.1.1:1521:ORCLPostgresql的连接字符串:db.urljdbc:postgresql:192.168.1.1:5432/database1、基本数据类型差异OraclePostgreSQLVarchar2varcharnumbernumericdatetimestamp/…

hibernate+struts2整合jar包冲突

前几天,在用HibernateStruts2做项目的时候遇到了一个很棘手的问题,jar包冲突!!!先亮一下错误: 之前还不知道这是个啥错误,经过上网查找之后才知道这是jar包冲突的问题!!由…

在ASP.NET Core中实现一个Token base的身份认证

以前在web端的身份认证都是基于Cookie | Session的身份认证, 在没有更多的终端出现之前,这样做也没有什么问题,但在Web API时代,你所需要面对的就不止是浏览器了,还有各种客户端,这样就有了一个问题,这些客…

Java IO: FileInputStream

转载自 Java IO: FileInputStream译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) FileInputStream可以以字节流的形式读取文件内容。FileInputStream是InputStream的子类,这意味着你可以把FileInputStream当做InputStream使用(FileInputStream与…

Java获取指定月份的最后一天

https://blog.csdn.net/itmyhome1990/article/details/85619804 Java获取指定月份的最后一天 麦田 2019-01-02 17:43:38 8036 收藏 1 展开 import java.text.SimpleDateFormat; import java.util.Calendar; public class DUtil { public static String getLastDayOfMon…

php 运算器,运算器的功能是什么

运算器的功能是加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作,运算器的处理对象是数据,所以数据长度和计算机数据表明方法,对运算器的性能影响极大。本文操作环境:Window…

同步外部接口数据的一些记录和分享

https://blog.csdn.net/jsnhux/article/details/80116921 https://blog.csdn.net/jsnhux/article/details/80116921 同步外部接口数据的一些记录和分享 灵葱 2018-04-28 10:03:49 2086 收藏 1 展开 1、spring boot之定时器任务 Component public class JobScheduler { pro…

.NET Standard 2.0:整齐划一的目标

在两个月前公布.NET Standard 2.0时,微软认为新版标准的目标在于为现有的三个主要.NET平台:.NET Framework、.NET Core,以及Xamarin提供一个坚实的底层基础,并为未来满足树莓派或IoT等全新类型设备需求可能需要创建的分支提供支持…

vue中路径带# vs 不带#

路由模式有两种 hash:路径带 # 符号,如 http://localhost/#/loginhistory:路径不带 # 符号,如 http://localhost/login 修改路由配置,代码如下: export default new Router({mode: history,routes: [] }…

centos7离线安装oracle11g,CentOS 7.5离线安装Oracle 11gR2

操作系统:CentOS 7.5 64bit,安装方式为gnome Desktop,附加系统工具以及兼容X Window安装包Oracle版本:11gR2Oracle11gR2官方文档链接安装系统建立默认用户的时候建立非oracle的账号。由于是离线安装,使用ssh登录&#…

Java IO: FileOutputStream

转载自 Java IO: FileOutputStream译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) FileOutputStream可以往文件里写入字节流,它是OutputStream的子类,所以你可以像使用OutputStream那样使用FileOutputStream。 这是一个FileOutputStr…

Struts文件上传与下载详解_上传单个文件

大家都知道Servlet上传文件的时候用的是commons-fileupload插件上传的,但是过程极其的麻烦,同样Struts2也有自带的文件上传,但是过程比Servlet里面的简单了不少,接下来请大家看演示: 我们现在先建一个表单用于上传文件…

IP暴露接口IP白名单设置

暴露接口IP白名单设置 暴露接口IP白名单设置 CrazyL- 2018-01-03 14:36:15 4797 收藏 1 展开 String realIp IPUtil.getIpAddr(request); if(!"0:0:0:0:0:0:0:1".equals(realIp)){ List<String> ipList Resources.readLines(Resources.getR…

两年来的core折腾之路几点总结,附上nginx启用http2拿来即用的配置

为什么要迁移&#xff0c;江湖上传说windows server的稳定性不如某某某&#xff0c;这类议题与八卦新闻没两样&#xff0c;不谈&#xff0c;如果windows的价钱能够和linux相同或者差异不至于那么大&#xff0c;我才懒得换&#xff0c;因为穷&#xff0c;这才是重点。 涉及IO路径…

Vue(笔记)

所有东西必须都在标签里面进行定义&#xff0c;都在div中 报错后不断npm和cnpm Vue简介 Vue (读音/vju/, 类似于view)是一套用于构建用户界面的渐进式框架&#xff0c;发布于2014年2月。与其它大型框架不同的是&#xff0c;Vue被设计为可以自底向上逐层应用。Vue的核心库只关…

Java IO: RandomAccessFile

转载自 Java IO: RandomAccessFile译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) RandomAccessFile允许你来回读写文件&#xff0c;也可以替换文件中的某些部分。FileInputStream和FileOutputStream没有这样的功能。 创建一个RandomAccessFile 在使用Rand…

Struts文件上传与下载详解 _上传多个文件

在上一篇中给大家列出的单个文件的上传&#xff0c;那么这一篇咱们讲讲上传多个文件改怎么作呢&#xff1f;由于过程和上传单个文件的类似&#xff0c;所以在这里不细说&#xff0c;相信大家都能看懂&#xff0c;看不懂的可以在评论区留言&#xff0c;我看到之后会及时回复的&a…

oracle执行runstats,oracle runstats工具

------以sys登录进行授权 grant select on sys.v_$timer to suk; grant select on v_$mystat to suk; grant select on sys.v_$statname to suk; grant select on sys.v_$latch to suk;------This is the test harness I use to try out different ideas. It shows two vital s…

java通过poi读取excel中的日期类型数据或自定义类型日期

java通过poi读取excel中的日期类型数据或自定义类型日期 Java 读取Excel表格日期类型数据的时候&#xff0c;读出来的是这样的 12-十月-2019&#xff0c;而Excel中输入的是 2019/10/12 或 2019-10-12 poi处理excel时&#xff0c;当excel没有明确指明是哪个类型的数据时&…