写方式创建一个临时文件。
将原文件逐字向临时文件拷贝,拷到你要替换的内容处,转而拷贝要替换的新内容;新内容拷完后,将原文件的读指针移动到要删除的内容之后,接着继续拷贝,直到文件结束。
关闭打开的两个文件,删除原文件,将临时文件更名为原文件名。
为什么要这么做呢?因为你修改的部分的文件块大小新旧可能不一致,不好 *** 作。若是大小严格一致的,则可以用随机访问函数移动指针,直接写到原文件要修改的地方覆盖原数据却可。
import java.io.BufferedReaderimport java.io.File
import java.io.FileNotFoundException
import java.io.FileReader
import java.io.FileWriter
import java.io.IOException
import java.io.PrintWriter
public class Day02_B {
static String path="K:/Test/Name.txt"//路径
public static void main(String[] args) {
File fileText=new File(path)//文件
if(fileText.canExecute()) //如果文件存在就继续
setText(fileText,"刚","xx")//“刚”指定改为:“XX”
}
private static void setText(File fileText,String target,String src) {//修改
BufferedReader br=null
PrintWriter pw=null
StringBuffer buff=new StringBuffer()//临时容器!
String line=System.getProperty("line.separator")//平台换行!
try {
br=new BufferedReader(new FileReader(fileText))
for(String str=br.readLine()str!=nullstr=br.readLine()) {
if(str.contains(target))
str=str.replaceAll(target,src)
buff.append(str+line)
}
pw=new PrintWriter(new FileWriter(fileText),true)
pw.println(buff)
} catch (FileNotFoundException e) {
e.printStackTrace()
}catch (IOException e) {
e.printStackTrace()
}finally {
if(br!=null)
try {
br.close()
} catch (IOException e) {
e.printStackTrace()
}
if(pw!=null)
pw.close()
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)