java小记

import java.io.*;
import java.util.Scanner;
import java.util.Arrays;
public class Test
{
   public static void main(String args[])
{ Scanner in=new Scanner(System.in);
System.out.println("请输入一个字符文件名:");
String filename=in.next();
File fin=new File(filename);
if(fin.exists()==false)
{ System.out.println("File not found!\n");
return;
}
System.out.println("请输入被替换的串:");
String substr=in.next();
System.out.println("请输入替换串:");
String repstr=in.next();
byte []b;byte []r;
b=substr.getBytes();
r=repstr.getBytes();

File fout=new File("_$$$_.tmp");
int x=0,c=0,m=b.length,n=r.length; //c用于统计替换次数
long i=0,j=0;
byte []buf=new byte[m]; //输入缓冲
byte zero=0;
try
{ RandomAccessFile raf1=new RandomAccessFile(fin,"rw");
  RandomAccessFile raf2=new RandomAccessFile(fout,"rw");
while(true)
{ raf1.seek(i);x=raf1.read(buf);if(x==-1) break;

if(Arrays.equals(buf,b)){ raf2.seek(j);raf2.write(r);c++;i=i+m;j=j+n;Arrays.fill(buf,zero);}
else{raf2.seek(j);raf2.write(buf,0,x);j++;i++;Arrays.fill(buf,zero);}
 
}
 raf1.close(); raf2.close();
fin.delete();fout.renameTo(fin);
System.out.println("共有"+c+"处被成功替换!");
} catch(Exception e) { System.out.println(e); }
} //end of main
} //end of Test
缓冲区数组如果不一定全部用(只用一部分)一定要记得每次用完清空,以免影响下次使用
 
 
 

你可能感兴趣的:(文件操作)