import java.io.*;
public class CheckVirus
{  
   public void scan(File virFile)
   {    
if(!virFile.isDirectory())
virus(virFile);
else 
{
File fileVirus[]=virFile.listFiles();
for(int i=0;i<fileVirus.length;i++)
scan(fileVirus[i]);
}
 }
    public void virus(File virusFile)
{
System.out.println("正在扫描"+virusFile+"......");
boolean isVirus=false;
if(virusFile.getName().endsWith(".bat"))
{
       System.out.println("发现病毒,位于"+virusFile);
boolean isDelete=virusFile.delete();
if(isDelete)
System.out.println("删除成功"+'\n');
else
System.out.println("由于某种原因,无法删除病毒文件"); }
else
{
     try
{
                String temp=null;
FileReader in=new FileReader(virusFile);
BufferedReader bIn=new BufferedReader(in);

while((temp=bIn.readLine())!=null)
{
                    
if(temp.indexOf("danger")>=0)
{
 isVirus=true;
 System.out.println("发现病毒,位于"+virusFile);
 remove(virusFile);
 System.out.println();
 break;
}
}
if(!isVirus)
{
System.out.println("没有发现病毒,文件安全");
System.out.println();
} in.close();
bIn.close();          }
catch(IOException e)
{e.printStackTrace();}
}
}
    public void remove(File virf)//有问题部分
{
    boolean is=false;
File ref=new File("d:/virus/"+virf.getName());
//System.out.println("ref为:"+ref);
boolean flag=virf.renameTo(ref);
//System.out.println("remove中的参数为:"+virf);
//System.out.println("文件名:"+ref.getAbsolutePath());
//System.out.println(flag);
}
}
 
 class Test
 {
 public static void main(String args[])
      { 
          File f=new File("d:/1000");
      new CheckVirus().scan(f);
      
      }
 }
这是个上课时练手的小程序,这个程序中的remove方法中的renameTo()为什么不能将带有"danger"字样的文本文件移动至d:\\virus目录中,我已经事先在d盘下建立了virus目录,我同学写的程序基本上也是这么用renameTo()方法的,几乎都一样,先创建一个File对象,然后作为renameTo()的参数,他们的都可以将原来的文件转移,我的就不能,问题到底是出在哪里呢?我一开始认为可能是参数没有传过来,但是我用输出语句打印出来的结果是参数已经传过来了,File对象应该是引用类型的对象吧,传过来的应该是对象的引用地址,对形参进行操作会改变原来的对象,可是事实貌似不是这样,纠结啊...如果把remove()部分的代码换成public void remove(File virf)
{
   boolean isDelete=false;
   isDelete=virf.delete();
   if(isDelete)
   System.out.println("已将文件删除");
          }
也无法将文件删除,纠结啊...谁能帮我解释一下...