Генерируйте хеш из каталога, считывая количество байтов из файла - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь прочитать все файлы в каталоге, используя JFileChooser, а затем получить размер каждого файла (количество байтов), а затем создать простой хэш.Однако он не возвращает хеш-значение.Кто-нибудь может помочь?

class OpenDirListner implements ActionListener {
    public void actionPerformed(ActionEvent e) {

        try {
            JFileChooser chooser = new JFileChooser();
            chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            chooser.showOpenDialog(chooser);


            String dirName = chooser.getSelectedFile().getAbsolutePath();

            File files = new File(dirName);

            File[] fileName = files.listFiles();

            String names = "";

            if (files != null) {

                // iterate over files and directories
                for (File next : fileName) {

                    // Get name
                    String name = next.getName();

                    names = names + " \n" + name;

                }
            }

            byte[] bytes = Files.readAllBytes(Paths.get(dirName));

            int length = bytes.length;

            long total = 0;

            // Dump byte array contents and total the values.
            for (byte b : bytes) {

                total += b * 13;
            }

            // create a very simple hash (total of byte values, each multiplied by a prime
            // number, all of which is multiplied by file size)
            total *= length * 997;

            JOptionPane.showMessageDialog(null, "Directory Name:  " + dirName + "\n Filenames:  " + names+);

        } catch (Exception a) {
            JOptionPane.showMessageDialog(null, "Select a Directory");
        }
    }
}

При чтении одного файла он работает без проблем, однако не возвращает хеш-значение для ряда файлов в каталоге

...