У меня есть каталог различных папок по имени клиента. Каждый клиент получает несколько 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);
}
}