Buongiorno a tutti,
sto cercando di creare un programma che per una cartella che do in input, analizzi tutti i suoi file, cerchi quelli che contengono un nome che dico io e copino il file in un altra cartella. Nello specifico, io vorrei cercare nel nome del file il "codice" e l'anno. I file che ho infatti sono fatti così: 123123.2022 , dove 123123 è il codice e 2022 l'anno.
Essendo totalmente inesperto ho cercato in lungo e in largo e messo assieme questo codice, che però non funziona, in quanto non copia nessun file. Spero qualcuno di voi possa mettere ordine nel codice e anche nella mia testa
Codice:
public class Layout extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
//Crea etichette
JLabel percorsoLabel = new JLabel("Percorso directory", SwingConstants.CENTER);
JLabel spazio1= new JLabel(" ", SwingConstants.CENTER);
JLabel dittaLabel = new JLabel("Ditta", SwingConstants.CENTER);
JLabel spazio2= new JLabel(" ", SwingConstants.CENTER);
JLabel annoLabel = new JLabel("Anni", SwingConstants.CENTER);
JLabel spazio3= new JLabel(" ", SwingConstants.CENTER);
JLabel percorsoDestLabel = new JLabel(" Percorso di Destinazione", SwingConstants.CENTER);
//Numero caratteri degli spazi
JTextField percorsoText = new JTextField(30);
JTextField dittaText = new JTextField(20);
JTextField annoText = new JTextField(20);
JTextField percorsoDestText = new JTextField(30);
//Pulsante
JButton pulsante = new JButton("Copia");
JButton pulsante1 = new JButton("Sfoglia");
JButton pulsante2 = new JButton("Sfoglia");
//costruttore dell'applicazione
public Layout() throws IOException {
super("Strumento di copia contabilità");
//Dimensioni pannello
setSize(600, 250);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel pannello = new JPanel();
dittaText.setEditable(true);
annoText.setEditable(true);
// Layout FlowLayout
pannello.add(percorsoLabel);
pannello.add(pulsante1);
pannello.add(percorsoText);
pannello.add(spazio1);
pannello.add(dittaLabel);
pannello.add(dittaText);
pannello.add(spazio2);
pannello.add(annoLabel);
pannello.add(annoText);
pannello.add(spazio3);
pannello.add(percorsoDestLabel);
pannello.add(pulsante2);
pannello.add(percorsoDestText);
pannello.add(pulsante);
setContentPane(pannello);
setResizable(false);
setVisible(true);
JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
// Azione su pulsante di sorgente
ActionListener copia = new ActionListener(){
public void actionPerformed(ActionEvent e){
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnValue = jfc.showOpenDialog(null);
// int returnValue = jfc.showSaveDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
File selectedFile = jfc.getSelectedFile();
String f = selectedFile.getAbsoluteFile().toString();
percorsoText.setText(f);
}
}
};
// Azione pulsante di destinazione
ActionListener incolla = new ActionListener(){
public void actionPerformed(ActionEvent e){
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnValue = jfc.showOpenDialog(null);
// int returnValue = jfc.showSaveDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
File selectedFile = jfc.getSelectedFile();
String f = selectedFile.getAbsoluteFile().toString();
percorsoDestText.setText(f);
}
}
};
pulsante1.addActionListener(copia);
pulsante2.addActionListener(incolla);
}
// Costruttore copia
private static void copyFileUsingStream(File source, File dest) throws IOException {
InputStream is = null;
OutputStream os = null;
try {
is = new FileInputStream(source);
os = new FileOutputStream(dest);
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
} finally {
System.out.println("The File is copied to newFile.");
is.close();
os.close();
}
}
//imposta filtri con ciclo copia
JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
File[] cartella = new File[(int) jfc.getCurrentDirectory().getAbsoluteFile().length()];
public void filtra(File e, String from, String filter, String filter1) throws IOException{
FileFilter accetta = new FileFilter() {
public boolean accept(File f) {
return f.isDirectory()
|| (f.isFile() && f.getName().toLowerCase().contentEquals(filter) &&
f.getName().toLowerCase().contentEquals(filter1));
}
};
for (int j = 0; j < cartella.length; j++) {
cartella = jfc.getCurrentDirectory().getAbsoluteFile().listFiles(accetta);
}
ActionListener copia = new ActionListener(){
public void actionPerformed(ActionEvent e){
for (int j = 0; j < cartella.length; j++) {
try {
copyFileUsingStream(cartella[j], new File(percorsoDestText.getText()));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
};
pulsante.addActionListener(copia);
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Layout program = new Layout();
}