Java - перемещение файлов, но не каталогов - PullRequest
0 голосов
/ 31 января 2020

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

Проблема, с которой я столкнулся, связана с logi c в строке 65. По какой-то причине (и я понимаю, что это, вероятно, что-то очевидное, я '' м пропуская), логика c в операторе if, кажется, не работает должным образом ... Я пробовал несколько способов проверить его, и каждый раз, когда он продолжает перемещать папки предыдущего года.

Очень ценю любые советы. Спасибо.

import javax.swing.*;
import java.awt.event.*;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;
import java.awt.*;
import java.util.*;
import java.util.concurrent.TimeUnit;


public class File_mover_v2 extends JPanel
   implements ActionListener {
   JButton go;

   JFileChooser chooser;
   String choosertitle;

  public File_mover_v2() {
    go = new JButton("Do it");
    go.addActionListener(this);
    add(go);
   }

  public void actionPerformed(ActionEvent e) {
    int result;
    File maindir = null;
    String[] subdirs = {
        "adam",
        "alex"
          };


    chooser = new JFileChooser(); 
    chooser.setCurrentDirectory(new java.io.File("."));
    chooser.setDialogTitle(choosertitle);
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

    chooser.setAcceptAllFileFilterUsed(false);

    if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { 
        maindir = chooser.getSelectedFile();
      }
    else {
      System.exit(0);
      }

    for(int i=0;i<subdirs.length; i++){

        File attlist0 = new File(maindir + "\\" + subdirs[i] + "\\clientstatements");

        File[] filelist0 = attlist0.listFiles();

        if (attlist0.listFiles() == null) {
            continue;
        }
        else {

            File f2018 = new File(maindir + "\\" + subdirs[i] + "\\clientstatements\\2018");
            f2018.mkdir();

            for(int k=0;k<filelist0.length;k++){

                if (filelist0[k].getName() == "2014" || filelist0[k].getName() == "2015" || filelist0[k].getName() == "2016" || filelist0[k].getName() == "2017") {
                    continue;
                }
                else {
                    filelist0[k].renameTo(new File(maindir + "\\" + subdirs[i] + "\\clientstatements\\2018",  filelist0[k].getName()));  
                    JOptionPane.showMessageDialog(null,filelist0[k].getPath());
                }

            }

        }
    }
}

  public Dimension getPreferredSize(){
    return new Dimension(200, 200);
    }

  public static void main(String s[]) {
    JFrame frame = new JFrame("");
    File_mover_v2 panel = new File_mover_v2();
    frame.addWindowListener(
      new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
          System.exit(0);
          }
        }
      );
    frame.getContentPane().add(panel,"Center");
    frame.setSize(panel.getPreferredSize());
    frame.setVisible(true);
    }
}
...