flush()函数用法详解

2023-11-01

最近在写一个小项目时用到了Java的序列化,在写入输出流时用到了flush()函数。网上搜了一下感觉讲的不是很详细,在此写一下自己的理解
先给出代码片段

// 第一种关闭资源方式
try {
            FileOutputStream fileOut =new FileOutputStream("temp.dat");
            ObjectOutput out = new ObjectOutputStream(fileOut);
            out.writeObject(obj);
            out.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
······
······
class obj implements Serializable{···}
// 第二种关闭资源方式
try {
            FileOutputStream fileOut =new FileOutputStream("temp.dat");
            ObjectOutput out = new ObjectOutputStream(fileOut);
            out.writeObject(obj);
            out.flush();
            out.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
······
······
class obj implements Serializable{···}

在以上代码中我们用ObjectOutputStream 类用来序列化obj对象,并将该对象序列化到一个文件中。

我们给出了细微差别的两段代码,这两段代码的主要区别在于try代码块中关闭资源的方式不同。第二段代码使用了close()flush()方法来关闭输出流和文件输出流,而第一段代码只是使用了close()方法来关闭输出流。

flush()方法和close()方法都可以用来关闭输出流,但它们之间有一些区别。

flush()方法可以将输出流缓存中的内容强制输出,但并不会关闭输出流,所以在调用flush()方法之后,你仍然可以向输出流中写入内容。调用flush()方法通常用于确保输出流中的内容被立即写入到目标设备中,例如,你在写入数据后希望立即将数据发送给网络或硬盘。如果没有调用flush()方法,写入的数据可能会被缓存,无法立即发送给目标设备,从而导致一些问题。

相比之下,close()方法不仅会将输出流缓存中的内容强制输出,还会关闭输出流,所以在调用close()方法之后,你不能再向输出流中写入内容。调用close()方法通常用于释放资源和关闭连接,例如,在使用网络连接或文件输出流时,你需要在使用完毕之后关闭连接或文件输出流,以释放相关资源。

因此,如果你仅仅需要将输出流缓存中的内容强制输出,并且仍然需要使用该输出流,可以使用flush()方法;如果你已经完成了对输出流的操作,并且需要释放相关资源,应该使用close()方法。
以上

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

flush()函数用法详解 的相关文章

  • 在 Java 中连接和使用 Cassandra

    我已经阅读了一些关于 Cassandra 是什么以及它可以做什么的教程 但我的问题是如何在 Java 中与 Cassandra 交互 教程会很好 如果可能的话 有人可以告诉我是否应该使用 Thrift 还是 Hector 哪一个更好以及为什
  • 如何为最终用户方便地启动Java GUI程序

    用户想要从以下位置启动 Java GUI 应用程序Windows 以及一些额外的 JVM 参数 例如 javaw Djava util logging config file logging properties jar MyGUI jar
  • Java new Date() 打印

    刚刚学习 Java 我知道这可能听起来很愚蠢 但我不得不问 System out print new Date 我知道参数中的任何内容都会转换为字符串 最终值是 new Date 返回对 Date 对象的引用 那么它是如何打印这个的呢 Mo
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • Java - 将节点添加到列表的末尾?

    这是我所拥有的 public class Node Object data Node next Node Object data Node next this data data this next next public Object g
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 如何修复 JNLP 应用程序中的“缺少代码库、权限和应用程序名称清单属性”?

    随着最近的 Java 更新 许多人都遇到了缺少 Java Web Start 应用程序的问题Codebase Permissions and Application name体现属性 尽管有资源可以帮助您完成此任务 但我找不到任何资源综合的
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • linux qt cmake错误的解决方法

    QT错误 新建项目后显示项目未配置 在工具 选项 kits中先要把kits clone一个到Manual中 在项目中使用Clone of Desktop这一个 极其坑 安装cmake sudo apt get install cmake 编
  • python-flask-sqlalchemy

    1 flask sqlalchemy 集成的两种方式 1 通过flask app初始化 from flask sqlalchemy import SQLAlchemy flask db SQLAlchemy from flask impor
  • 安装nltk_data数据包的问题:[Errno 11004] getaddrinfo failed

    问题 安装nltk时 在python shell中输 import nltk nltk download 会出现以下问题 这是因为nltk download 下载连接不上 在C Windows System32 drivers etc中找到
  • 图解fork函数机制(简单易懂)

    fork函数机制十分难以理解 尤其涉及到循环fork时就更难搞清楚 例如 for i 0 i lt 3 i pid fork if pid gt 0 std cout lt lt pid lt
  • 经常访问的站点

    色色日语网 www qianxunjp com 日本软件 www flatworld jp
  • MySQL执行计划解读

    Explain语法 EXPLAIN SELECT 变体 1 EXPLAIN EXTENDED SELECT 将执行计划 反编译 成SELECT语句 运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2 EXPLAIN
  • 首看世界杯

    首看世界杯 不谈技术 只聊自己的几点感受 纯属个人感想 今年是第一次关注世界杯 本来对足球是没有什么兴趣的 如果说对足球有什么了解的话 大部分还是来自小时候的动画片 足球小将 但是看现实中的足球比赛 半天进一个球 甚至一个球都不会进 感觉没
  • 【技术碎片】jcraft.jsch 文件传输工具与方法

    目录 前言 依赖 ChannelSftp功能 实现 JschUtil java ImageInfoService java ImageInfoServiceImpl java 参考资料 前言 SFTP相当于SSH FTP 其中FTP则协议通
  • 2023第一个重大漏洞,几乎影响所有组织

    Dark Reading 网站披露 微软修复了 Outlook 中存在的零日漏洞 漏洞被追踪为 CVE 2023 23397 是一个权限提升漏洞 攻击者可以利用该漏洞访问受害者的 Net NTLMv2 响应身份验证哈希并冒充用户 安全研究人
  • 集训一月小结

    暑假集训过了4个周了 仔细想想这4个周我都做了些什么 学到了什么 又有什么让我感到开心 有什么令我绝望 不管是谁都必须承认在板凳上每天坐上9个小时以上 学习那些算法 有时候会让我感到兴奋 有时候又会让我不愿意在电脑前坐一分钟 想想过程 究其
  • 中国智能卡车“遥遥领先”:卡车NOA落地5000万公里0事故,全球首个

    贾浩楠 发自 副驾寺智能车参考 公众号 AI4Auto 成熟的 擎天柱 已经可以自己出去赚钱了 此时此刻 遍及华东 华北 华南 西北 几乎全国所有主要货运干线上 都有智能重卡承运商单 高速路段由卡车智能驾驶系统完全承担驾驶任务 自主控制油门
  • chinesecalendar报错:no available data for year 2022, only year between [2004, 2021] supported

    Error no available data for year 2022 only year between 2004 2021 supported 解决 更新最新chinesecalendar 每年年底需更新最新版本的chineseca
  • BGP route processing

    路由协议 套用IT里面的术语 实际上就是分布式数据库系统 它包含了节点间的数据传递和节点内的数据处理 对于BGP来说 节点间基于TCP 端口179 的连接 在这个基础上 可以构建AS间的EBGP AS内的IBGP IBGP有full mes
  • python中的os.walk函数的用法

    转自http blog csdn net bagboy taobao com article details 8938126 os walk top topdown True nerr r None followlinks False 可以
  • Check failed: registry.count(t ype) == 1 (0 vs. 1) Unknown layer type: Input (known types: Input )

    自己建立一个工程 调用libcaffe lib 成功编译 但是运行就会遇到报错 F0519 14 54 12 494139 14504 layer factory hpp 77 Check failed registry count t y
  • Random类和UUID以及验证码的生成

    一 介绍与测试 Random 产生随机数 UUID 通用唯一识别码 目的是让分布式系统中的所有元素 都能有唯一的辨识信息 根据当前时间和电脑网卡 生成一段字符 Radom类 import java util public class Ran
  • 你为成为一名DBA,做好准备了吗?

    之前的文章中 我提到了 如何找到第一份DBA工作 云时代的来临 DBA该何去何从 关于从事数据库工作 需要哪些经验 那么 如果你想成为一名DBA 你为此做好准备了吗 我曾问过的一个问题是一个人应该从事DBA这样的职业么 这个问题并不容易回答
  • Android 实现隐私政策提示弹窗

    button shape xml
  • hisi3516dv300芯片基于hwmon驱动框架的温度获取驱动源码分析

    1 内核hwmon驱动框架 参考博客 内核hwmon驱动框架详解以及海思芯片温度驱动分析 2 驱动实现的效果 sys devices virtual hwmon hwmon0 pwd sys class hwmon hwmon0 sys d
  • flush()函数用法详解

    最近在写一个小项目时用到了Java的序列化 在写入输出流时用到了flush 函数 网上搜了一下感觉讲的不是很详细 在此写一下自己的理解 先给出代码片段 第一种关闭资源方式 try FileOutputStream fileOut new F