java中的文件扫描程序构建
文件扫描器-我扫描一个文件夹并散列(MD5)其中的每个文件。 然后将哈希值与包含恶意文件哈希值的sql db进行比较。 如果文件是恶意的(我的文件夹中的散列与数据库中的散列相匹配),我想将其附加到文本区域并将其删除 如果文件不是恶意文件(我的文件夹中的文件与数据库中的任何哈希不匹配),则要在文本区域“未找到恶意文件”中打印 问题: 1.实际上,如果我的文件夹中有多个文件是恶意文件,则第一个文件(哈希)将打印两次 2.如果文件夹中没有恶意文件,则消息“未找到恶意文件”不会打印到文本区域。 3.我可以从文件夹中删除恶意文件,但无法从文本区域中删除 任何帮助都将不胜感激。多谢各位 这是我的密码java中的文件扫描程序构建,java,mysql,user-interface,Java,Mysql,User Interface,文件扫描器-我扫描一个文件夹并散列(MD5)其中的每个文件。 然后将哈希值与包含恶意文件哈希值的sql db进行比较。 如果文件是恶意的(我的文件夹中的散列与数据库中的散列相匹配),我想将其附加到文本区域并将其删除 如果文件不是恶意文件(我的文件夹中的文件与数据库中的任何哈希不匹配),则要在文本区域“未找到恶意文件”中打印 问题: 1.实际上,如果我的文件夹中有多个文件是恶意文件,则第一个文件(哈希)将打印两次 2.如果文件夹中没有恶意文件,则消息“未找到恶意文件”不会打印到文本区域。 3.我可
public void actionPerformed(ActionEvent e){
if(e.getSource() == button){
int returnVal = fc.showDialog(AntiVirus.this, "MD5 Virus Check");
if(returnVal == JFileChooser.APPROVE_OPTION){
path = fc.getSelectedFile().getAbsolutePath();
File folder = new File(path);
File [] filesList = folder.listFiles();
// loop inside the folder and print the hash value
for (File selectFile : filesList){
if (selectFile.isFile()){
areaMD5.append(checkSum(selectFile) + "\n");
String hash [] = areaMD5.getText().split("\n");
for (String hashFile : hash){
try{
final String queryCheck = "SELECT hashFileValue FROM hashfile WHERE hashFileValue = ?";
final PreparedStatement ps = (PreparedStatement) conn.prepareStatement(queryCheck);
ps.setString(1, hashFile);
final ResultSet resultSet = ps.executeQuery();
while (resultSet.next()){
String hfv = resultSet.getString("hashFileValue");
if(hashFile.equals(hfv)){
areaAnswer.append(" " + hashFile + " " + selectFile.getName() + "\n");
//delete file if malicious
selectFile.delete();
areaDelete.setText(" File Name: " + selectFile.getName() + " was deleted ! \n");
}
//this statement doesn't work---------
else{
areaAnswer.setText(" No malicious files found \n ");
}
}// finish while
} catch (Exception ex){
areaAnswer.setText("Exception is: " + ex);
}
}//end for loop
}//if(selectFile)
}//for(File selectFile)
}//if(JFileChooser)
else{
areaMD5.setText(" Select a folder. ");
}
}//if(e.getSource)
}//end actionPerformed
您应该将代码拆分为具有明确、单一职责的类和方法,而不是将GUI、循环、字符串拆分和加密混合在一起。如果你在大括号后需要评论,这肯定是有问题的迹象。我会确保你的查询返回了一些东西,并且你认为你正在更新的文本区域实际上就是屏幕上的文本区域谢谢大家的重播。。。但我不是java方面的专家……我正在尝试构建一个简单的文件夹扫描程序,对其中的文件进行散列(md5),并将其与mysql数据库中的散列进行比较。