我的机器中毒了,导致机器上的每个html文件最后都包含下面两行代码
----O;K?? 団P慖
----D2q蘤#甛6陂馠??R圡宇http://www.333292.com/cb.js></script>
于是写这个程序把机器上所有的html文件最后两行删掉
这个程序了涉及到了java 读写文本、遍历目录及子目录、获得文件扩展名的操作。
import java.io.*;
public class ChangeFile {
public void changeFile(File inFile) {
String _temp;
boolean _hasVirus = false;
try {
// 读HTML文件...............................
FileReader _frd = new FileReader(inFile);
BufferedReader _brd = new BufferedReader(_frd);
// 将读出来的字符集写入另一个文件..................................
File outFile = new File(inFile.getPath() + ".tmp");
FileWriter _fwt = new FileWriter(outFile);
// 一行一行读文件,判断文件里是否包含病毒
_temp = _brd.readLine();
while (_temp != null) {
if (_temp.contains("団P慖")
|| _temp
.contains("R圡宇http://www.333292.com/cb.js></script>")) {
_hasVirus = true;
} else {
_fwt.write(_temp + "\n");
}
_temp = _brd.readLine();
}
_brd.close();
_frd.close();
_fwt.close();
// 删掉原文件,将新写的文件名改为源文件名
if (_hasVirus == true) {
inFile.delete();
outFile.renameTo(inFile);
// 形成记录文件D:\\log.txt
FileWriter _wlog = new FileWriter(new File("d:\\log.txt"), true);
_wlog.append(inFile.getPath() + " has virus;\n");
// System.out.println(inFile.getPath() + " has virus;");
_wlog.close();
} else {
outFile.delete();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 遍历目录及子目录下所有的文件
public void searchSubFile(String dir) {
File _dir = new File(dir);
if (!_dir.exists()) {
System.out.println("文件或目录不存在");
return;
}
if (_dir.isDirectory()) {
File[] subFiles = _dir.listFiles();
for (int i = 0; i < subFiles.length; i++) {
System.out.println(subFiles[i].getPath());
searchSubFile(subFiles[i].getPath());
}
return;
}
// System.out.println(_dir.getPath());
// 遍历目录,开始更改文件
String _ext = getExtension(_dir);
if (_ext != null) {
if (_ext.equalsIgnoreCase("html") || _ext.equalsIgnoreCase("htm")) {
changeFile(_dir);
}
}
}
// 获得文件扩展名
public String getExtension(File file) {
String _filename = file.getName();
if ((_filename != null) && (_filename.length() > 0)) {
int i = _filename.lastIndexOf(".");
if ((i > 0) && (i < (_filename.length() - 1))) {
// System.out.println(_filename.substring(i + 1));
return _filename.substring(i + 1);
}
}
return null;
}
public static void main(String[] args) {
ChangeFile ttt = new ChangeFile();
ttt.searchSubFile("D:\\My_Dev");//此处换成你所需修改HTML文件的目录,然后java编译运行即可
}
}