题目:提供一个文件操作的方法,其需要实现功能:对一个文件的任意位置可以插入任何内容
提供一个文件操作的方法,其需要实现功能:对一个文件的任意位置可以插入任何内容
@param filePath:文件路径
@param postion:追加内容添加位置
@param contents:追加内容
public static void addContentsToFile(String filePath, int postion, String contents) {
}
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("d:/"));
//File tempFile = new File("d:/wwwww.txt");
//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();
测试:
String filePath = ("hehe.txt");
//File file = new File("hehe.txt");
String contents = new String("abc");
try {
addContainsToFile(filePath,3,contents);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
执行前:
执行后: