1问题

在某个文件的中间某个位置插入字符串,例如:

文件内容:abcd

插入内容:123

插入下标:2

预期结果:ab123cd

2基本思路

1、校验参数的合法性
2、将指针移动到插入的位置
3、通过流读取出来写到磁盘文件上(开辟读和写的流)
4、将指针重新指定到插入位置
5、将写入的内容write写入
6、将后续内存重新写入该文件

3代码演示

import java.io.*;public class InsertTest {
//1、校验参数的合法性
//2、将指针移动到插入的位置
//3、通过流读取出来写到磁盘文件上(开辟读和写的流)
//4、将指针重新指定到插入位置
//5、将写入的内容write写入
//6、将后续内存重新写入该文件//    方法: void seek(long pos) //将文件记录移动到指定的pos位置public static void insertContent(String path  , int index, String cont) {//1、校验参数的合法性File file = new File(path);if(!file.exists()){return;}if(index <0){return;}File tmpfile = new File(file.getParent()+file.separator+file.separator+"tmp.txt");//新建一个文件tmp.txt来存放需要移动的内容RandomAccessFile randomAccessFile = null;OutputStream outputStream = null;InputStream inputStream = null;try {randomAccessFile = new RandomAccessFile(path, "rws");//2、将指针移动到插入的位置randomAccessFile.seek(index);//3、通过流读取出来写到磁盘文件上(开辟读和写的流)outputStream = new FileOutputStream(tmpfile);inputStream = new FileInputStream(tmpfile);byte[] bytes = new byte[100];int len;while ((len = randomAccessFile.read(bytes)) !=-1){outputStream.write(bytes,0,len);}outputStream.flush();//4、将指针重新指定到插入位置randomAccessFile.seek(index);//5、将写入的内容write写入randomAccessFile.write(cont.getBytes());//6、将后续内存重新写入该文件while ((len =inputStream.read(bytes)) !=-1) {randomAccessFile.write(bytes,0,len);}} catch (Exception e1) {e1.printStackTrace();} finally {try {//关闭所有的流if (randomAccessFile != null) {randomAccessFile.close();}if(inputStream != null){inputStream.close();}if(outputStream!=null){outputStream.close();}} catch (Exception e1) {e1.printStackTrace();}}}public static void main(String[] args) throws IOException {insertContent("C:\\Users\\ccc\\Desktop\\IO流\\b.txt",2,"123");//参数path:文件路径;index:插入下标;cont:插入字符串}
}

4运行结果

java-IO流-在文件中数据内容的插入问题相关推荐

  1. Java io流---拷贝文件夹下的所有文件和目录

    Java io流-拷贝文件夹下的所有文件和目录 代码: package demo01;import java.io.*; import java.util.TreeMap;public class C ...

  2. java io流复制文件简单实例

    java io流复制文件简单实例 实例1: package com.io;import java.io.BufferedInputStream; import java.io.BufferedOutp ...

  3. java代码将excel文件中的内容列表转换成JS文件输出

    思路分析 我们想要把excel文件中的内容转为其他形式的文件输出,肯定需要分两步走: 1.把excel文件中的内容读出来: 2.将内容写到新的文件中. 举例 一张excel表中有一个表格: 我们需要将 ...

  4. JAVA~~IO流和文件

    ​​​​​​​​ Io流的分类 有多种分类方式: 一种方式是按照流的方向进行分类: 以内存作为参照物, 往内存中去,叫做输入(Input).或者叫做读(Read). 从内存中出来,叫做输出(Outpu ...

  5. java io流区别_Java中IO流的分类和BIO,NIO,AIO的区别

    到底什么是IO 我们常说的IO,指的是文件的输入和输出,但是在操作系统层面是如何定义IO的呢?到底什么样的过程可以叫做是一次IO呢? 拿一次磁盘文件读取为例,我们要读取的文件是存储在磁盘上的,我们的目 ...

  6. 使用字节缓冲流在文件中写内容

    package text; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.I ...

  7. Java io流实现文件分割

    网络上传文件的时候,当一个文件很大时,就需要将文件分割成几个文件,以便于网络传输.用java来实现这个功能,思路如下:利用io流读取文件,然后再将文件字节分成对应的字节,再写入文件.为了加快读取文件效 ...

  8. Java基础,读取文件中的内容写入到另外一个文件。

    有两种方法,首先: 第一种方法:一次性全部读取所有文件内容(这里Arrays.sort(b)代表对字节进行排序,如果不需要进行删除即可) import java.io.FileInputStream; ...

  9. 使用IO流将数据库中数据生成一个文件,结果使用Notepad++打开部分数据结尾出现NUL...

    场景描述: 项目中通过java代码中从数据库中查询一系列数据,对数据做相应处理,然后通过字符流将数据写如一个新生成的文件中,将该项目部署在linux服务器上,最后生成的文件拿到本地使用notepad+ ...

最新文章

  1. asp.net 对xml文件的读写,添加,修改,删除操作
  2. YOLO窥见黑夜|YOLO in the Dark让黑夜里的目标检测成为可能
  3. hexo使用jenkins自动部署到阿里云
  4. POJ 2481 Cows POJ 2352 Stars(树状数组妙用)
  5. 零基础自学python的建议-你是如何自学 Python 的?
  6. php redis删除所有key,PHP 对 Redis key 值的操作
  7. react子组件向父组件传递数据实例
  8. STM32F103C8T6最小系统原理图和PCB
  9. python关键词排名批量查排名_[代码全屏查看]-Python 批量获取Baidu关键词的排名并入库...
  10. mdf数据库文件打开
  11. mysql 字段值分布很少的字段要不要加索引
  12. 谷歌AlphaFold近日宣称预测出地球上几乎所有蛋白质结构
  13. C++常见问题总结_构造函数与析构函数
  14. 数据库连接池 DBCP和c3p0数据库连接池
  15. TraceBack的用法
  16. Integer对象的大小比较
  17. 计算机网络体系结构详解(图文)
  18. 按了锁定计算机怎么办,笔记本电脑键盘锁定了怎么办有什么方法解锁
  19. 【Lua 教程系列第 4 篇】Lua 中的第一行代码 hello world
  20. 计算机网络——3A安全认证

热门文章

  1. 做好多项目管理的十个关键步骤(含工具)
  2. OSChina 周日乱弹 —— 你撞鬼了吗?
  3. 秘辛:2019上半年程序员生存报告
  4. 图像处理的一些相关知识(Related knowledge for IQA)
  5. 100+大数据开源处理工具汇总
  6. 有限元基础及ANSYS应用 - 第9节 - 2 平面应变问题的ANSYS分析
  7. 什么是序列化与反序列化,为什么序列化
  8. intel UHD graphics 620/630 -win7 驱动
  9. [牛客练习] 深信服校园招聘c/c 软件开发H卷 Apare_xzc
  10. 华为手机为何能反超小米?