android中是否需要关闭参数/参数InputStream?

2024-01-11

所有流和 bufferedReader 都需要关闭我的问题是如果 流和 bufferedReader 位于方法参数/参数内 也需要关闭吗?

正常代码示例:

InputStream i = entity.getContent();
i.close();

问:如果它位于仅传递的方法的参数内怎么办

public void doDownload(InputStream i, BufferedReader b) {
    i.close();
    b.close();
}

即使 inputstream 和 bufferedreader 只是一个参数,我也应该关闭它吗 并且没有对象?


这(主要)是一个风格问题,只要someone关闭它们。然而,一致的方法效果最好。管理此类资源的关键技术是使它们所有权明确:资源的所有者负责释放它。这种所有权可以在资源的生命周期内发生变化,但在任何时候都应该是明确的。

在这种情况下:

public void doDownload(InputStream i, BufferedReader b) { ... }

流和读取器不是通过此方法创建的,而是提供给它的。因此,调用者应该负责关闭它。该方法执行完毕后,它甚至可能继续使用该资源,因此不应关闭它。

然而,在某些情况下,调用方法可能是转移资源所有权的一种形式。一个明显的例子是Java中的流链接——通过包装另一个OutputStream来创建一个OuputStream意味着外部的OutputStream现在负责在内部的OutputStream自行关闭时关闭它。

在另一个例子中:

InputStream i = entity.getContent();

这取决于细微的差别。有没有getContent()实际上方法create the InputStream, 要不就获得参考到实际属于的资源entity目的?在第一种情况下,调用者方法应该负责释放它。否则,实体类应该自行执行(根据RAII http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization图案)。

一个更清楚的例子是:

InputStream i = context.openFileInput(fileName);

在这种情况下,调用者显然负责创建InputStream,因此负责关闭它。

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

android中是否需要关闭参数/参数InputStream? 的相关文章

  • 将现有 eclipse 项目导出到 war 文件时出现“模块名称无效”

    我正在尝试将现有 Eclipse 项目导出到 war 文件 但无论我在 WAR Export 对话框页面中输入什么 系统总是返回 模块名称无效 我不知道如何解决这个问题 谢谢您的帮助 我有同样的问题 我修复了它 请按照以下步骤操作 您可以创
  • Flutter - 删除 ListView 中项目之间的空间

    我正在使用 ListView builder 函数来创建项目列表 然而 iOS 中每个项目之间的空间很大 截图 你知道如何删除项目吗 看来是默认的 因为我没有添加它 code 列表显示 return Scaffold body ListVi
  • Android 媒体播放器搜索栏

    我有一个创建 播放和处理媒体播放器 只是音频 的服务 但我在主要活动中有一个搜索栏 我想自然地显示音频文件的进度并允许用户搜索到不同的位置 我花了很长时间才弄清楚 将 UI 中的搜索栏连接到服务中的媒体播放器的最佳或正确方法是什么 我将这样
  • 是否有最新的 Facebook Java SDK? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 好像没找到最近更新的 如果没有 是否有一个好的 Java 库来执行与 Facebook 的 API 交
  • MongoDB java 驱动程序 3.0 在身份验证时无法捕获异常

    我超级卡住o 0 在尝试通过 Java 驱动程序进行身份验证时 存在捕获异常的问题 正如你可能会看到的Throwable类不工作 private MongoClient mongoClient private MongoDatabase m
  • 使用 HTTPServletRequestWrapper 包装请求参数

    我有一个可以验证 授权 REST 调用的过滤器 该过滤器需要访问请求参数 因此我为此编写了一个自定义 HTTPServletRequestWrapper import java util Collections import java ut
  • 如何关闭导航抽屉以使用返回主页图标按钮?

    我也将操作栏与搜索栏一起使用 并且我需要像后退按钮一样使用 ActionBar ico 但我也在使用导航抽屉 如何关闭 隐藏 禁用导航抽屉菜单以使用后退按钮 我的 ActionBar 代码 Override public boolean o
  • Android 10 请求 ACTIVITY_RECOGNITION 权限

    我试图遵守 Google 的要求 为 Android 10 请求 ACTIVITY RECOGNITION 权限 但我似乎不明白为什么没有显示权限弹出窗口 就像其他权限 即位置 存储等 一样 我的代码是 if ContextCompat c
  • Java8:流映射同一流中的两个属性

    我有课Model带有以下签名 class Model private String stringA private String stringB public Model String stringA String stringB this
  • 通知操作而不启动新活动?

    我计划提供一个包含两个操作的提醒通知 一个用于批准登录请求 一个用于拒绝登录请求 通过单击这些操作中的任何一个 我希望向我的服务器发出 HTTP 请求 最重要的是 我不想启动新的 Activity 或根本不想将用户重定向到我的应用程序 Co
  • 可用屏幕的尺寸

    我使用的是 Nexus 7 1280x800 android 4 2 2 API 17 我想获取屏幕的大小 将其划分为相同高度和宽度的正方形部分 我正在使用 FrameLayout 我的方块是 ImageView 的子类 我这样做 cont
  • 如何从一个活动检索 Double 值到另一活动?

    我制作了一个包含 2 个活动的应用程序 其中第一个活动包含一些 EditText 十进制数字 另一个活动也包含一些 EditText 十进制 现在我想将一个 EditText 的值传递给另一个 但作为 双 而不是作为一个字符串 因为该值将用
  • 在循环中按名称访问变量

    我正在开发一个 Android 项目 并且有很多可绘制对象 这些绘图的名称都类似于icon 0 png icon 1 png icon 100 png 我想将这些可绘制对象的所有资源 ID 添加到整数 ArrayList 中 对于那些不了解
  • Java String ReplaceAll 方法给出非法重复错误?

    我有一个字符串 当我尝试运行时replaceAll方法 我收到这个奇怪的错误 String str something op str str replaceAll o n it works fine str str replaceAll n
  • 按“重置应用程序首选项”后,我的应用程序的所有权限都被撤销

    我开发了一个应用程序 支持Android 6 0 当我在 设置 gt 应用程序 gt 重置应用程序首选项 中重置应用程序首选项时 我的应用程序的所有权限都将被撤销 并且应用程序不会重新启动 撤销权限后未能重新启动应用程序可能会导致许多意外崩
  • 如何解决android程序中的警告“从不本地读取”

    为什么我收到警告说 The field testscreen ScaleAnimToShow mVanishAfter is never read locally testscreen java testscreen src com tes
  • 使用自定义比较器在 Java 中创建 SortedMap

    我想创建一个TreeMap在 Java 中具有自定义排序顺序 排序后的键是字符串 需要根据第二个字符进行排序 这些值也是字符串 示例地图 Za FOO Ab Bar 您可以像这样使用自定义比较器 Comparator
  • 如何减少 Android 中浮动 editText 提示和 editText 框之间的空间?

    我有一个带有浮动提示的 EditText 但我想知道如何减少浮动提示和 EditText 框之间的空间 现在我的用户界面看起来像https i stack imgur com ltfra jpg https i stack imgur co
  • Jackson 反序列化相当于 @JsonUnwrapped 吗?

    假设我有以下课程 public class Parent public int age JsonUnwrapped public Name name 生成 JSON age 18 first Joey last Sixpack 我如何将其反
  • 将数组值导出到 csv 文件 java

    我只需要帮助将数组元素导出到 csv 文件 我不知道我的代码有什么问题 任何帮助将不胜感激 谢谢 for int index 0 index lt cols length index FileWriter fw new FileWriter

随机推荐

  • Rails JSON 请求未正确解析为 post 参数

    我正在尝试调试 Rails 未解码 JSON POST 数据的问题 服务器日志显示 2011 12 14T06 44 44 00 00 app web 2 Started POST 2011 12 14T06 44 44 00 00 app
  • 具有参数化构造函数的 Xamarin DependencyService

    如何使用 Xamarin Forms DependencyService 通过参数化构造函数注入依赖项 Answer 你不能 程序集属性实现仅适用于默认构造函数 也称为无参数构造函数 例如 assembly Dependency typeo
  • 使用 java 在 infix 到 postfix 应用程序中得到错误的输出

    我最近编写了一个java程序 它采用中缀表达式并将其转换为后缀表达式 它在大多数情况下都有效 但我得到了某些表达式的错误输出 例如表达式 a b c d e 在应该输出的时候会输出 abcde a b c d e import java u
  • Visual Studio“在浏览器中查看”特定页面的快捷方式?

    我们正在使用视觉工作室2008并想知道是否有办法为 创建 键盘或工具栏 快捷方式在浏览器中查看 命令 但是与特定页面来自特定 已加载 项目 我们总是从 Project x 的 Somepage aspx 开始测试 调试我们的应用程序 我想创
  • 不使用过滤函数删除 RDD 中的第一个元素

    我从一个文件构建了一个 RDD 其中 RDD 中的每个元素都是文件中由分隔符分隔的部分 val inputRDD1 RDD String Long myUtilities paragraphFile spark path1 coalesce
  • yii2 路由 - 将参数传递给规则中的路由

    当用户访问domain page 我需要将它们路由到controller action 100 我不想通过 URL 传递任何参数 但想将其添加到 url 规则中 我将下面的代码添加到我的配置文件中 urlManager gt rules g
  • bootstrap下拉顶级导航制作可点击的链接

    我正在使用 bootstrap wordpress 主题创建一个带有下拉菜单的菜单 但是顶级链接仅在单击时显示下拉菜单 并且单击时不会转到页面本身 因此 在 www thermoryuk co uk wp 中 当我单击 地板 时 我想转到地
  • 为什么解释器模式很糟糕?

    In Steve Yegge 对设计模式的评论 http steve yegge googlepages com ten great books 他将解释器模式称为 笑话 他继续谈论编译器的看法如何改变 但解释语言仍然如何继续 尽管我看不出
  • 正则表达式中的捕获组[重复]

    这个问题在这里已经有答案了 我正在探索在正则表达式中捕获组 但我对缺乏相关文档感到困惑 例如 谁能告诉我两个正则表达式之间的区别 madhur and madhur 就我而言 第二个建议匹配madhur字符串中零次或一次 第一个与第二个有什
  • Python/Pandas 计算 Ichimoku 图表组件

    我有 Pandas DataFrame 对象 其中包含日期 开盘价 收盘价 每日最低股票数据和最高股票数据 我想计算的组成部分Ichimoku https www investopedia com terms i ichimoku clou
  • 如何在 Ubuntu 18.04 上安装或升级到 sqlite 3.33.0?

    我目前正在运行带有 SQLite3 的 Ubuntu 18 04 SQLite 3 的版本为 3 22 0 我需要将其升级到版本 3 33 0 以利用可用的新功能 如果我使用 apt get 删除并重新安装 SQLite3 它只会重新安装
  • 如何在 woocommerce 中获取产品的特色图片

    请告诉我哪里出错了 产品特色图片未显示 args array post type gt product posts per page gt 80 product cat gt profiler orderby gt rand loop ne
  • 如何在 Enterprise Architect 中自动生成 HTML 输出

    Enterprise Architect 有一种方法可以生成 HTML RTF 等格式的文档 您可以发布它 但您必须使用其 GUI 手动执行此操作 当您的 eap 文件位于 CVS Subversion 服务器中时 拥有一个每天检查最新版本
  • 将固定大小的 ImageView 在父 ConstraintLayout 中水平居中

    我有一个相当简单的布局 AConstraintLayout占满整个屏幕 一大片CardView在顶部有一个ImageView那是一半CardView和上面的一半 实际上不是一半 但你明白了 然而 有两个问题 ImageView粘在父级的左侧
  • dplyr 连接 A 列或 B 列

    如何使用 dplyrs 连接函数在 R 中通过 OR 语句连接 2 个表 例如 使用以下密钥将 df1 加入到 df2 上 df1 ColumnA df2 ColumnA 或 df1 ColumnA df2 ColumnB library
  • Boost::GIL 如何将图像以 JPEG 或 PNG 格式保存到 char* 中?

    所以我在保存到文件时看到了很多示例 但我想知道是否可以保存到 char 或字符串而不是文件中 也就是说将其保存在内存中 boost 本身似乎没有任何东西可以促进这一点 所有 I O 似乎都基于提供文件名 不过好像还有延伸here http
  • 在可编辑模式下使用单独的源目录安装包

    情况 这是示例包的结构 tree Foo Foo setup py src bar py init py 包的名称应为foo但是包的源文件放置在src folder 文件的内容是 设置 py from setuptools import s
  • 隐藏 ASP.NET MVC5 中某些角色的链接

    所以这听起来可能是一个愚蠢的问题 但如何仅为管理员用户显示链接 假设普通用户看到以下链接 主页 关于 联系我们 管理员用户会看到以下链接 主页 关于 联系 管理员 我尝试限制控制器并链接菜单上的控制器 但它仍然向所有人显示链接 只是不允许除
  • std::shared_mutex 和 std::shared_lock 是读者更喜欢还是作者更喜欢?

    在读写锁的实现中 我们可以利用std shared mutex with std shared lock and std lock guard or std unique lock Question gt 这个新专题是作者还是读者更喜欢 根
  • android中是否需要关闭参数/参数InputStream?

    所有流和 bufferedReader 都需要关闭我的问题是如果 流和 bufferedReader 位于方法参数 参数内 也需要关闭吗 正常代码示例 InputStream i entity getContent i close 问 如果