我的想法是可以用RandomAccessFile,这个类的seek方法,想在
文件的哪个位置
插入内容都行。所以你的第一行就不在话下了。但是,这个会覆盖你文件中插入位置后面的内容。相当于我们在输入的时候,按了键盘的insert键盘。所以,像你这种情况只能用临时文件来存储原有的内容,然后把要插入的数据写入文件,再把临时文件的内容追加到文件中。\x0d\x0avoid insert(String filename,int pos,String insertContent){//pos是插入的位置\x0d\x0aFile tmp = File.createTempFile("tmp",null)\x0d\x0atmp.deleteOnExit()\x0d\x0atry{\x0d\x0aRandomAccessFile raf = new RandomAccessFile(filename,"rw")\x0d\x0aFileOutputStream tmpOut = new FileOutputStream(tmp)\x0d\x0aFileInputStream tmpIn = new FileInputStream(tmp)\x0d\x0araf.seek(pos)//首先的话是0\x0d\x0abyte[] buf = new byte[64]\x0d\x0aint hasRead = 0\x0d\x0awhile((hasRead = raf.read(buf))>0){\x0d\x0a//把原有内容读入临时文件\x0d\x0atmpOut.write(buf,0,hasRead)\x0d\x0a\x0d\x0a}\x0d\x0araf.seek(pos)\x0d\x0araf.write(insertContent.getBytes())\x0d\x0a//追加临时文件的内容\x0d\x0awhile((hasRead = tmpIn.read(buf))>0){\x0d\x0araf.write(buf,0,hasRead)\x0d\x0a}\x0d\x0a}\x0d\x0a}import java.io.*
import java.util.*
public class Test{
public static void main(String[] args){
List<String>list=new ArrayList<String>()
try {
File f=new File("d:/file/hello.txt ")
Scanner sc=new Scanner(f)
int k=0
while(sc.hasNextLine()){
list.add(++k+" "+sc.nextLine())
}
FileWriter fw=new FileWriter(f)
for(int i=0i<list.size()i++)
fw.write(list.get(i)+"\r\n")
fw.flush()
fw.close()
System.out.println(" *** 作已经成功完成!")
} catch (FileNotFoundException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
}
}
}
评论列表(0条)