View Full Version : Aiuto per programmino
Ciao :)
Essendo sommerso dai vari cd di beckup che ho fatto nel corso del tempo, e perdendo oramai 20 minuti ogni volta che devo cercare qualcosa, mi sono detto: perche' non creare un programmuzzo semplice che mi aiuti a catalogare le mie cose?
L'idea e' piu' o meno questa: inserisco un cd, a cui associo un nome, e dico al programma di leggerlo. Lui vede tutti i file presenti all'interno, e inserisce le relative informazioni (nome, formato, dimensione...) all'interno di un database (io ho confidenza con oracle, ma potrei usare pure qualche file di testo per rendere la cosa piu' leggera), associandoli al nome del relativo cd.
Quando mi serve qualcosa, effettuo una ricerca nel database e vedo in quale cd si trova quello che sto cercando. :)
Il dubbio principale che ho e' come realizzare la parte in cui il programma controlla il contenuto del cd, leggendo nomi e dimensioni dei file presenti.
Per il resto non dovrei avere problemi.
Per il linguaggio... io conosco un po' di c, ma ho confidenza soprattutto con java.
Qualche consiglio su come procedere? :)
Grazie :p
p.s. Naturalmente, se foste a conoscenza dell'esistenza di un programma simile e gratuito, vi sarei grato se mi avvertiste :D
Io avevo il tuo stesso problema; ora per catalogare uso DiscLib, freeware, con cui ti puoi creare le tue collezioni di dati, partendo dai files che già hai sui cd o sull'hard disk, questo è il sito:
http://www.lyrasoftware.com/disclib/index.html
;)
Non so se esista qualcosa di già pronto ma se esistesse dovrebbe per forza essere gratuito.
Della serie "ma quante cose che hai da fare PGI" ti posto un po' di codice per leggere il CD.
import java.io.*;
import java.util.*;
import javax.swing.filechooser.*;
public class CDScanner {
private String cdPath;
private String cdLabel;
private Vector<CDElement> fileList;
public CDScanner(String cdLabel, String cdPath) {
this.cdLabel = cdLabel;
this.cdPath = cdPath;
}
public CDScanner scanCD() {
fileList = new Vector<CDElement>();
File root = new File(cdPath);
System.out.println("Root: "+root.getName());
recursiveScan(root);
return this;
}
private void recursiveScan(File file) {
if(file.isDirectory()) {
File[] temp = file.listFiles();
for(int i = 0; i < temp.length; i++) recursiveScan(temp[i]);
} else {
fileList.add(new CDElement(cdLabel, file));
}
}
public void printList(OutputStream out) {
PrintStream writer = new PrintStream(out, true);
for(CDElement e : fileList) writer.println(e);
}
public Vector<CDElement> getList() {
return fileList;
}
public static class CDElement {
private File file;
private String cdLabel;
public CDElement(String cdLabel, File file) {
this.cdLabel = cdLabel;
this.file = file;
}
public boolean equals(Object o) {
if(o instanceof CDElement) {
CDElement temp = (CDElement)o;
return
temp.file.getName().equals(file.getName()) &&
temp.cdLabel.equals(cdLabel);
}
return false;
}
public String toString() {
return "CD: " + cdLabel + " File: " + file;
}
public File getFile() {
return file;
}
public String getCDLabel() {
return cdLabel;
}
}
public static void main(String[] args) {
String cdPath = args[0];
FileSystemView fileSysView = FileSystemView.getFileSystemView();
String cdLabel = fileSysView.getSystemDisplayName(new File(cdPath));
StringTokenizer tempTk = new StringTokenizer(cdLabel, " ");
cdLabel = tempTk.nextToken();
new CDScanner(cdLabel, cdPath).scanCD().printList(System.out);
}
}
Che una cartella sia nell'hard disk o sia un CD intero cambia poco, sempre un java.io.File è. CDScanner richiede nel costruttore una path in formato String che rappresenti il percorso del drive di cui effettuare la scansione ed una stringa da usare come etichetta. Il metodo scanCD() legge ricorsivamente la directory radice (in questo caso il CD) e per ogni file crea un oggetto CDElement, che è un wrapper per un File ed una stringa che rappresenta l'etichetta del CD in cui il file dovrebbe trovarsi. Tutti i CDElement vengono infilati in un Vector ed il contenuto di questo vettore può essere inviato ad un OutputStream (printList) oppure puoi ottenere un riferimento ad esso con getList(). C'è un esempio d'uso nel main, che indica anche come recuperare l'etichetta del CD dal CD stesso. Non che ci sia granchè da fare. Assumendo che "d:\\" sia l'unità a cui corrisponde il CD:
CDScanner scanner = new CDScanner("etichetta", "d:\\").scanCD();
La classe non è Thread-safe.
Ciao.
:D Beh ragazzi, se rispondete mentre scrivo i miei romanzi allora! :D
Originariamente inviato da anx721
Io avevo il tuo stesso problema; ora per catalogare uso DiscLib, freeware, con cui ti puoi creare le tue collezioni di dati, partendo dai files che già hai sui cd o sull'hard disk, questo è il sito:
http://www.lyrasoftware.com/disclib/index.html
;)
Splendido :D
Io avevo pensato a qualcosa di un po' piu' semplice, ma devo dire che questo programmuccio e' perfetto :)
Grazie :p
Originariamente inviato da PGI
:D Beh ragazzi, se rispondete mentre scrivo i miei romanzi allora! :D
Non ti preoccupare, che il tuo codice l'ho copiato da una parte, e lo provero' sicuramente in seguito :D
Grazie anche a te :p
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.