让我纠结的一个小问题,help me,please...

saygoodbyetoyou 2010-02-28 01:16:56
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("已将文件删除");
}
也无法将文件删除,纠结啊...谁能帮我解释一下...
...全文
116 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
自己解决是最好的结果。
2到20个英文 2010-02-28
  • 打赏
  • 举报
回复
呵呵,解决了好,。。。。
saygoodbyetoyou 2010-02-28
  • 打赏
  • 举报
回复
没人理我,经过两个小时的奋战 我的问题解决了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧