Java分享笔记:RandomAccessFile流 & 在文件指定位置插入内容
RandomAccessFile流:随机存取文件流,该类定义了一个记录指针,通过移动指针可以访问文件的任意位置,且对文件既可以读也可以写。使用该类的write方法对文件写入时,实际上是一种覆盖效果,即写入的内容会覆盖相应位置处的原有内容。
为了实现插入内容的效果,需要我们自行设计程序来实现。下面是笔者的程序设计。
[1] 程序设计
/*---------------------
程序实现的功能:
....//使用RandomAccessFile流设计一个类,实现在指定文件的指定位置插入指定的内容
---------------------*/
package pack01; import java.io.*; public class InsertContent { private String filePath; //要操作的文件的路径
private String content; //要插入的内容
private long position; //要插入的位置 //构造方法
public InsertContent(String path, String con, long pos) {
filePath = path;
content = con;
position = pos;
} //设置要操作的文件的路径
public void setFilePath(String path) {
filePath = path;
} //设置要插入文件的内容
public void setContent(String con) {
content = con;
} //设置要插入的位置
public void setPosition(long pos) {
position = pos;
} //插入内容的具体实现方法
public void insertCon(){ RandomAccessFile raf = null; try { raf = new RandomAccessFile(filePath, "rw"); //将随机存取文件流连接到文件,访问方式设置为可读可写
raf.seek(position); //指定插入的位置 //***************先将插入点后面的内容保存起来****************
StringBuffer sb = new StringBuffer();
byte[] b = new byte[100];
int len;
while( (len=raf.read(b)) != -1 ) {
sb.append( new String(b, 0, len) );
}
//................................................. raf.seek(position); //重新设置插入位置
raf.write( content.getBytes() ); //插入指定内容
raf.write( sb.toString().getBytes() ); //恢复插入点后面的内容 } catch (IOException e) { e.printStackTrace(); } finally { //关闭随机存取文件流
try {
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} //测试方法
public static void main(String[] args) { InsertContent ic = new InsertContent("d:/JavaTest/file1.txt", "Java", 5);
ic.insertCon();
}
}
[2] 运行效果
运行前:

运行后:

注:希望与各位读者相互交流,共同学习进步。
Java分享笔记:RandomAccessFile流 & 在文件指定位置插入内容的更多相关文章
- 利用RandomAccessFile类在指定文件指定位置插入内容
package File; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; ...
- java 学习笔记之 流、文件的操作
ava 学习笔记之 流.文件的操作 对于一些基础的知识,这里不再过多的解释, 简单的文件查询过滤操作 package com.wfu.ch08; import java.io.File; import ...
- Java 替换word文档文字,指定位置插入图片
先说下 需要的依赖包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ex ...
- java POI往word文档中指定位置插入表格
1.Service demo import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.a ...
- JS向光标指定位置插入内容
方法: function insertHtmlAtCaret(html) { var sel, range; if (window.getSelection) { // IE9 and non-IE ...
- JAVA通过I/O流复制文件
JAVA通过I/O流复制文件 本文是对字节流操作,可以多音频视频文件进行操作,亲测有效. 个人感觉这个东西就是靠记的, 没什么好解释的,,,, import java.io.File; import ...
- java格式化字符串,在指定位置插入指定字符串,兼容中英文以及特殊字符,例如:换行,用于解决生成pdf换行问题等问题
本博客是自己在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处. http://www.cnblogs.com/king-xg/p/6370890.html 如果觉得对您有 ...
- 正确截取List指定位置的内容
正确截取List指定位置的内容 import java.util.ArrayList; import java.util.List; public class ListUtils { public s ...
- 在Word指定位置插入富文本域值(html文本)
遇到此问题,首先想到的就是各种百度.结果度娘了一会并没有发现有用的有效的解决方法,哎,看来还得靠自己啊. 首先整理了下手头上的资源,一是HtmlAgilityPack,专门解析Html文本用的:二是我 ...
随机推荐
- 简单shell实现
http://blog.csdn.net/lishuhuakai/article/details/11928055 #include <stdio.h> #include <unis ...
- FTP FileZilla Server 本地加密C# 实现
最近公司要做一个资料管理模块,因系统是C/S架构,原来小文件都是直接使用7Z压缩后保存到SQL Server数据库 而资料管理模块也就是文件上传,下载加权限管理,考虑文件较多,还可能比较大,所以打算在 ...
- stark——pop功能(admin中添加功能)
一.pop功能需要实现的功能和问题 1.如何在一对多和多对多字段后渲染 +2.+对应的跳转路径是什么3.保存添加记录同时,将原页面的对应的下拉菜单中添加该记录 二.window.open()方法详解 ...
- Office 365系列(三) -Office 365 Pro plus 安装
这一篇博客主要是说Office 365 Pro plus安装. 1. 当登陆到Office 365以后,点击右边链接“下载软件” 2. 安装最新Office 软件 3. 采用点对点安装,当安装成功以后 ...
- SharePoint 2013 - Breadcrumb
By default SharePoint 2013 doesn’t have a breadcrumb (like the 2010 version used to have). This was ...
- bit byte 字 字节 关系 简列
字 word 字节 byte 位 bit 字长是指字的长度 1字=2字节(1 word = 2 byte = 16bit) 1字节=8比特(1 byte = 8bit) 1比特=1位 一个字的字长为1 ...
- Matlab GUI保存图片
% --- Executes on button press in pushbutton5. function pushbutton5_Callback(hObject, eventdata, han ...
- vmware克隆的linux机器网络不通
当我使用vmware的完全克隆功能克隆出两台虚拟机之后,登录发现网络不通,仔细检查发现几个问题,由于克隆之后默认的eth0网卡在系统中会变成eth1,导致之前的eth0网卡配置信息无法加载,网络不通, ...
- GitLab 数据备份和恢复
GitLab 备份 /opt/gitlab/bin/gitlab-rake gitlab:backup:create //只是备份各项目的数据 完成后会在默认路径下多出来备份的tar包! /var/o ...
- Oracle文本导入器
将文本格式化为Tab分隔的数据行,可以用Excel搞定 如果新增列需要从前面的列获取数据,比如用身份证号计算年龄 需要保证新增列在导入的文件中实际存在列,否则无法使用相对位置和绝对位置进行取值 相对位 ...