展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

追加内容到指定文件的最前面

  • 代码案例
import java.io.*;
public class test {
public static void main(String[] args) throws IOException {
// 追加如下内容
String writeContext = "SET NAMES utf8mb4;\n" +
"SET FOREIGN_KEY_CHECKS = 0;\n" +
"\n";
// 目标文件夹
String path = "C:\\work\\git\\test";
// 从指定位置开始追加
int deep = 0;
// 获得指定文件对象
File file = new File(path);
// 获得该文件夹内的所有文件的名称
File[] array = file.listFiles();
for(int i=0;i<array.length;i++)
{
if(array[i].isFile())//如果是文件
{
for (int j = 0; j < deep; j++)//输出前置空格
System.out.print(" ");
// 拼接出要修改的文件路径
String txtFilePath = "C:\\work\\git\\test\\" + array[i].getName();
System.out.println(txtFilePath);
// 开始追加
addContainsToFile(txtFilePath, 0, writeContext);
}
}
}
public static void addContainsToFile(String filePath, int position, String contents) throws IOException {
//1、参数校验
File file = new File(filePath);
System.out.println(file);
//判断文件是否存在
if (!(file.exists() && file.isFile())) {
System.out.println("文件不存在 ~ ");
return;
}
//判断position是否合法
if ((position < 0) || (position > file.length())) {
System.out.println("position不合法 ~ ");
return;
}
//2、创建临时文件
File tempFile = File.createTempFile("sss", ".temp", new File("C:/work"));
//3、用文件输入流、文件输出流对文件进行操作
FileOutputStream outputStream = new FileOutputStream(tempFile);
FileInputStream inputStream = new FileInputStream(tempFile);
//在退出JVM退出时自动删除
tempFile.deleteOnExit();
//4、创建RandomAccessFile流
RandomAccessFile rw = new RandomAccessFile(file, "rw");
//文件指定位置到 position
rw.seek(position);
int tmp;
//5、将position位置后的内容写入临时文件
while ((tmp = rw.read()) != -1) {
outputStream.write(tmp);
}
//6、将追加内容 contents 写入 position 位置
rw.seek(position);
rw.write(contents.getBytes());
//7、将临时文件写回文件,并将创建的流关闭
while ((tmp = inputStream.read()) != -1) {
rw.write(tmp);
}
rw.close();
outputStream.close();
inputStream.close();
}
}
posted @   DogLeftover  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示