2014-11-12 2 views
0

Я пытаюсь разработать программу, которая ищет дубликаты файлов с использованием MD5 хэша, он будет сравнивать два хэш-файла для дублирования.Сравнение двух байтовых массивов в java

У меня возникли трудности с сравнением двух файлов после хэширования файлов с хэш-кодом MD5, я продолжаю получать сообщение об ошибке «Java.IO.FileNotFoundException.». Вот мой код, я не знаю, что я делаю неправильно.

////////////////////// It is a GUI Program //////////////////////// 

DefaultListModel m = new DefaultListModel(); // List Model for displaying the hash codes 

    int rval = chooser.showOpenDialog(null); //JFileChooser for selecting files tobehashed 

     if(rval == JFileChooser.APPROVE_OPTION){ 
      File f = chooser.getCurrentDirectory(); 
      String fs = f + ""; 
      if(!f.isDirectory()){ 
       JOptionPane.showMessageDialog(null, "Supplied Directory does not exist"); 
      } 
      //display files on the TesxtField component 

       File[] filenames = f.listFiles(); 
       String fn = Arrays.toString(filenames); 
        String type = f.isFile() ? "File" : "Directory : "; 
         long len = f.length(); 
          String all = type +" "+" " + " Length: " + len; 
            dis.setText(all + "\n"); 
             dis.setText(fn + "\n" + "\n"); 

        //Loops through the file and check sum of the list files 


       for(File file : f.listFiles()){ 
       String hash; 


       try { 
       hash = MD5.asHex(MD5.getHash(file)); 

       ////////// Here is where my problems starts, Please help ////////// 

       for(int i = 0; i < hash.length(); i++) 
        for(int j = i + 1; j < hash.length(); j++){ 
         File[] f1 = new File[i]; 
         File[] f2 = new File[j]; 
       boolean check = MD5.hashesEqual(MD5.getHash(new File(Arrays.toString(f1))),MD5.getHash(new File(Arrays.toString(f2)))); //compares the byte of files 

       System.out.println(check); 
       m.addElement(hash); 
       task.setModel(m); 

        } 

       }catch (IOException ex) { 
        JOptionPane.showMessageDialog(null, ex); 
       } 

       } 
+1

'java.io.FileNotFoundException' предполагает, что файл, который вы пытаетесь прочитать, не найден. Какой файл вы пытаетесь прочитать? Вы подтвердили, что он существует (и у вас есть разрешения на его чтение)? Что делает 'new File (Arrays.toString (f1)). GetAbsolutePath()' return? – yshavit

+2

Линии, где ваши проблемы вызывают _no_ смысл. Вы создаете массив файлов с размером 'i', преобразовывая этот пустой массив в строку, а затем рассматривая это как новый файл !? –

+0

@ yshavit Я пытаюсь прочитать хеш-значение и сравнить их для дубликатов. – emekamba

ответ

0

Для чтения файлов на Java вам нужен объект InputStream. Посмотрите на этот вопрос Getting a File's MD5 Checksum in Java, который, кажется, поможет вам с вашей проблемой

+1

Эй, очень полезный человек, спасибо за ур ответ. – emekamba

+0

Но проблема, с которой я столкнулась, - это чтение файлов, которые были хэшированы и их сравнение для дубликатов. будет ценить помощь ур. – emekamba

Смежные вопросы