- 代码案例
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();
}
}
标签:tmp,文件,rw,指定,追加,File,new,position
From: https://www.cnblogs.com/chniny/p/16874027.html