将字节写入文件而不删除现有字节[重复]

2023-11-21

可能的重复:
在 Java 中在文件中间写入字节的最佳方法

我有一个需要在其中写入字节的文件。

我知道我需要在文件中的哪个位置insert特定字节。为了清楚起见,我需要在文件中间写入字节而不擦除任何现有字节。整个操作应该会增加文件的长度。

最好的方法是什么?


做到这一点的唯一方法是移动当前挡住的字节。根据执行此操作的频率以及文件的大小,通常最好创建一个新文件,复制现有文件并在此过程中插入新字节。

如果您需要不经常更新文件,或者文件很小(最多 100 kb),您可以使用随机访问文件:

  1. 扩展文件,使用setLength()方法,将要插入的字节数添加到返回的内容中length() method.
  2. 如果你有足够的内存,创建一个byte[]它将保存从插入点到文件前一个结尾的所有字节。
  3. Call seek()定位在插入点
  4. Call readFully()填充你的临时数组
  5. Call seek()插入点的位置+要插入的字节数
  6. Call write()此时写入缓冲区
  7. Call seek()重新定位到插入点
  8. 调用`write()写入新字节

如果您无法在步骤 #2 中创建足够大的数组,则必须使用较小的缓冲区在循环中执行步骤 3-6。为了提高效率,我会使用至少 64k 缓冲区。

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

将字节写入文件而不删除现有字节[重复] 的相关文章

随机推荐

  • 如何从xsd生成xpath?

    如何从 xsd 生成 xpath XSD 验证 xml 我正在一个项目中工作 我使用 java 从 xsd 生成示例 XML 然后从该 XML 生成 xpath 如果有任何方法可以直接从 xsd 生成 xpath 请告诉我 这可能有用 im
  • Zoo/xts - 无法对 1 细胞子集进行数学计算? R 挂起

    我在 Windows 上使用最新版本的 R xts zoo R 2 15 xts 0 8 6 zoo 1 7 7 我看到以下奇怪的行为 以前的版本没有这种情况 library xts data sample matrix sample xt
  • c中的##是什么?

    我看过这个片段 define kthread create threadfn data namefmt arg kthread create on node threadfn data 1 namefmt arg 什么是 代表 是什么意思
  • 如何在 asp:GridView 中启用就地编辑?

    我如何添加编辑框 并在提交期间读取它们的值 使用asp Repeater 我有一个asp GridView它显示只读 即不可编辑 数据集 例如 我怎样才能启用的单元格GridView可编辑 例如 Photoshop Mockup Note
  • CUDAfy.NET 给出 Win32Exception:系统找不到指定的文件

    我已经添加了对CUDAfy NET通过 NuGet 的库
  • 确定实体是否是新的而不检查@Id

    有没有办法确定给定的实体类 Entity class A String name boolean method Object anyEntity How can I check here if this entity is complete
  • 从 Java 配置中使用 Spring 动态语言支持

    我想用动态语言支持Spring框架 在 XML 中我只需使用lang命名空间 但我想使用 Java 配置 即 Configuration类 only 我可以想象我可以通过初始化所有内容来做到这一点org springframework sc
  • 行锁 - 手动使用它们

    我基本上有一个应用程序 它有 5 个线程 每个线程都从表中读取 该查询是一个简单的 SELECT TOP 1 from the table 但我想强制执行锁定 以便下一个线程将从表中选择下一条记录 而不是锁定的记录 当应用程序完成其任务时
  • 无需包装器或使用 API 即可访问 Google 趋势数据:Python

    我正在尝试编写一个 Python 程序来从 Google Trends GT 收集数据 具体来说 我想自动打开 URL 并访问折线图中显示的特定值 我很乐意下载 CSV 文件 或者通过网络抓取值 根据我对 Inspect Element 的
  • 如何使用python直接从服务器发送电子邮件而不使用smtp

    我是 php 程序员 使用 php 您可以直接向服务器发送电子邮件 例如以下代码向客户端发送电子邮件 但在Python中 你必须使用smtplib和gmail或hotmail服务器来发送电子
  • 如何从锚子节点获取父级div id

    div class wizard rules If a href class highlight ALL DASHBOARD a encounters an error div 这里我想获取div idwizard ruleonclick
  • 如何减小android中单选按钮的大小

    我们可以减小 android 中单选按钮的大小吗 据我所知 单选按钮可以完成 但不像其他 EditText 或 TextView 那样 试试这个代码
  • 使用CSS,如何使图像跨越页面的整个宽度作为背景图像?

    比如说 就像这个例子一样 http www electrictoolbox com examples wide background image html 当我这样做时 无论我做什么 最终图像周围都会出现白色边框 我究竟做错了什么 如果你希
  • 如何从模板引擎 TWIG 中的完整路径加载模板

    我想知道如何从完整路径加载模板 例如FILE恒定给予 实际上你必须为模板设置一个 根 路径 如下所示 require once path to lib Twig Autoloader php Twig Autoloader register
  • 如何检查元素滚动后是否可见?

    我正在通过 AJAX 加载元素 其中一些只有向下滚动页面才可见 有什么方法可以知道某个元素现在是否位于页面的可见部分 这应该可以解决问题 function isScrolledIntoView elem var docViewTop win
  • 为什么控制台窗口在显示我的输出后立即关闭?

    我正在按照以下指南学习 C MSDN 现在 我刚刚尝试了实施例1 here是链接到MSDN 并且我遇到了一个问题 为什么控制台窗口在显示我的输出后立即关闭 using System public class Hello1 public st
  • 谁能推荐一个好的 .Net PDF 阅读库? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 谁能推荐一个从 Net 读
  • datetime2 数据类型到 datetime 数据类型的转换错误

    我有一个控制器 HttpPost public ActionResult Create Auction auction var db new EbuyDataContext db Auctions Add auction db SaveCh
  • jpg 每像素位数

    jpeg 中每个像素有多少位 我有一个 425 x 282 的 jpg 大小为 20635 字节 如果我将其编码为 png 则其大小为 116255 字节 一般回答 每像素位数 位 像素 1 字节 8 位 gt JPG 20635 8 位
  • 将字节写入文件而不删除现有字节[重复]

    这个问题在这里已经有答案了 可能的重复 在 Java 中在文件中间写入字节的最佳方法 我有一个需要在其中写入字节的文件 我知道我需要在文件中的哪个位置insert特定字节 为了清楚起见 我需要在文件中间写入字节而不擦除任何现有字节 整个操作