java-IO流-在文件中数据内容的插入问题
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流-在文件中数据内容的插入问题相关推荐
- Java io流---拷贝文件夹下的所有文件和目录
Java io流-拷贝文件夹下的所有文件和目录 代码: package demo01;import java.io.*; import java.util.TreeMap;public class C ...
- java io流复制文件简单实例
java io流复制文件简单实例 实例1: package com.io;import java.io.BufferedInputStream; import java.io.BufferedOutp ...
- java代码将excel文件中的内容列表转换成JS文件输出
思路分析 我们想要把excel文件中的内容转为其他形式的文件输出,肯定需要分两步走: 1.把excel文件中的内容读出来: 2.将内容写到新的文件中. 举例 一张excel表中有一个表格: 我们需要将 ...
- JAVA~~IO流和文件
Io流的分类 有多种分类方式: 一种方式是按照流的方向进行分类: 以内存作为参照物, 往内存中去,叫做输入(Input).或者叫做读(Read). 从内存中出来,叫做输出(Outpu ...
- java io流区别_Java中IO流的分类和BIO,NIO,AIO的区别
到底什么是IO 我们常说的IO,指的是文件的输入和输出,但是在操作系统层面是如何定义IO的呢?到底什么样的过程可以叫做是一次IO呢? 拿一次磁盘文件读取为例,我们要读取的文件是存储在磁盘上的,我们的目 ...
- 使用字节缓冲流在文件中写内容
package text; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.I ...
- Java io流实现文件分割
网络上传文件的时候,当一个文件很大时,就需要将文件分割成几个文件,以便于网络传输.用java来实现这个功能,思路如下:利用io流读取文件,然后再将文件字节分成对应的字节,再写入文件.为了加快读取文件效 ...
- Java基础,读取文件中的内容写入到另外一个文件。
有两种方法,首先: 第一种方法:一次性全部读取所有文件内容(这里Arrays.sort(b)代表对字节进行排序,如果不需要进行删除即可) import java.io.FileInputStream; ...
- 使用IO流将数据库中数据生成一个文件,结果使用Notepad++打开部分数据结尾出现NUL...
场景描述: 项目中通过java代码中从数据库中查询一系列数据,对数据做相应处理,然后通过字符流将数据写如一个新生成的文件中,将该项目部署在linux服务器上,最后生成的文件拿到本地使用notepad+ ...
最新文章
- asp.net 对xml文件的读写,添加,修改,删除操作
- YOLO窥见黑夜|YOLO in the Dark让黑夜里的目标检测成为可能
- hexo使用jenkins自动部署到阿里云
- POJ 2481 Cows POJ 2352 Stars(树状数组妙用)
- 零基础自学python的建议-你是如何自学 Python 的?
- php redis删除所有key,PHP 对 Redis key 值的操作
- react子组件向父组件传递数据实例
- STM32F103C8T6最小系统原理图和PCB
- python关键词排名批量查排名_[代码全屏查看]-Python 批量获取Baidu关键词的排名并入库...
- mdf数据库文件打开
- mysql 字段值分布很少的字段要不要加索引
- 谷歌AlphaFold近日宣称预测出地球上几乎所有蛋白质结构
- C++常见问题总结_构造函数与析构函数
- 数据库连接池 DBCP和c3p0数据库连接池
- TraceBack的用法
- Integer对象的大小比较
- 计算机网络体系结构详解(图文)
- 按了锁定计算机怎么办,笔记本电脑键盘锁定了怎么办有什么方法解锁
- 【Lua 教程系列第 4 篇】Lua 中的第一行代码 hello world
- 计算机网络——3A安全认证