我需要就地修改文件的特定内容.

我不想创建一个新文件并重写旧文件.文件也很小,每个最大只有几MB.

对于那些想知道的人(虽然我不确定这是否与OP有关),我需要修改属于版本控制的文件并需要修改只读版本.在适当的位置进行修改要简单得多.

Java apis可以实现吗?

如果没有,是否有提供此功能的库?

解决方法:

Java允许随机访问和写入磁盘上的文件.但是,写入文件中间只能覆盖字节 – 即用其他字节替换特定字节 – 并且不能将数据插入文件的中间.为此,您必须在插入点之后重写所有内容.将文件视为恰好驻留在磁盘上的字符数组(char []).随机访问允许你做相同的

char[] file = ... // the file on disk

char[] newData = ... // the data to be written

int pos = ... // the position in the file to write to

for (i=0; i

{

file[pos+i] = newData[i];

}

要在文件中插入数据,需要使用与将数据插入数组相同的过程.插入点之后的所有数据都必须向右移动以容纳插入的数据.如果要用较短的字符串替换(即删除字节),则编辑后的数据必须向左移位.

其次,你说:

I need to modify files that are part of version control and need to modify a read-only version

只读就是这个意思.如果文件是只读的,则无论是否使用随机访问,都无法以任何方式对其进行修改.

你还在评论中说:

The new file will not be under source control.I will have to find a way to add it.I am trying to avoid this

如果文件受源代码管理,则您很可能正在使用本地副本.只要更新的文件与原始文件具有相同的名称并且位于同一目录中,如果您创建该文件的新实例,它就没有任何区别.您只需将更新的版本提交给源控制系统.

但是,如果要更新源控制系统存储库中的文件,则可能会永久损坏系统.

标签:java,file-io,inputstream,nio

来源: https://codeday.me/bug/20191002/1844316.html

java 文件的修改_使用java来修改文件内容相关推荐

  1. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  2. java中获取文件总行数_关于java:如何以有效的方式获取文件中的行数?

    本问题已经有最佳答案,请猛点这里访问. 我有一个大文件. 它包括大约3.000-20.000行. 如何使用Java获取文件中的行总数? 从你的评论到答案来判断,你要找的词是"有效的" ...

  3. java 写文件 属性吗_使用JAVA读写Properties属性文件

    自己定义一个属性文件:例如prop.properties baseFilePath=D\:/kuanter/resource tesx=abcd 我们要做的第一步就是要将文件读取到Properties ...

  4. java resources目录 编码_关于Java项目读取resources资源文件路径

    在看此篇博客是建议清楚classpath代表的路径,getServletContext().getRealPath("/")的含义,idea中项目编译后的目录格式,resoures ...

  5. java文件读取异常_关于Java:从文本文件读取会引发异常

    因此,我使用了DataInputStream,FileInputStream,BufferInputStream,FileReader,BufferedReader,Scanner,将其命名. 它们都 ...

  6. java 图像刺绣算法_图像处理:OpenCV3源代码文件解析

    引言 结合冈萨雷斯的<数字图像处理>和Opencv3.0,学习图像处理算法有一段时间了,知道了函数怎么使用,但不知道opencv所用的函数源代码是如何编写的,"知其然,也要知其所 ...

  7. java文件客户端下载_使用Java写一个minio的客户端上传下载文件

    标签:color   ati   tty   java   system   wired   format   media   param 前言: 确保已经安装了minio的服务端 代码: pom.x ...

  8. 内存映射文件 写入 卡住_在Java中使用内存映射文件时检测(写入)失败

    内存映射文件 写入 卡住 内存映射文件是一个很好的并且经常被忽视的工具. 我不会在这里详细介绍它们的工作方式(使用 力 Google Luke!),但我将快速总结其优势: 操作系统提供的延迟加载和写入 ...

  9. fileoutputstream 文件不存在_总结Java中创建并写文件的5种方式

    在Java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面小编就帮大家总结一下Java中创建文件的五种方法. 在java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面笔者 ...

最新文章

  1. (超贴心)Centos7安装2.5G网卡驱动(Realtek 3000)
  2. 19-6/28作业:100以内偶数求和
  3. 看板系统的表格动态数据显示
  4. 第八届蓝桥杯java b组第十题
  5. 转:CRC校验之模2除法
  6. 中国环境统计年鉴(2000到2018年)
  7. 使用阿里巴巴矢量图标库下载所需的小图标
  8. android回溯机制,Android事件分发机制全面解析
  9. 电脑端bilibili视频缓存合并视频的解惑
  10. 6月26日日志-消费记录界面实现
  11. Chrome浏览器保存微信公众号文章中的图片
  12. 计算机考研就业率,21考研同学需谨慎,三个专业就业率持续走低,包括热门计算机专业...
  13. 医学统计学中RR、OR和HR三个关于比值的概念
  14. 中州韵输入法 linux,linux manjaro安装五笔+拼音输入法(中州韵)
  15. 收楼了心情忐忑不安,该花钱请验房师来验房吗?找一个验房师需要多少钱,验房标准价格是多少,验房师现场验收出二百多个问题值不值
  16. 移动端软盘遮盖输入框的解决方案
  17. SAP ABAP OOALV常用的方法
  18. 自己写小工具 让工作更简单更效率
  19. 多个表左连接 先连大表还是小表_汽车连接器的拆卸工具
  20. 由货币的时间价值所想

热门文章

  1. Java 阻塞队列原理
  2. iPhone解锁密码忘了,指纹识别也用不了 -- 恢复iPhone吧
  3. 数据库三大范式是什么
  4. postcss 单独不转换_postcss踩坑问题集合
  5. vue Syntax Error Error PostCSS plugin postcss-pxtorem requires PostCSS 8
  6. 名师在线杂志名师在线杂志社名师在线编辑部2023年第6期目录
  7. c语言生肖游戏,玩游戏最厉害的那些生肖
  8. 一个闰字引发的事故 : 三星系统重启分析
  9. [python] 函数的缺省参数和注意事项
  10. 手机客户端的主要推广手段