|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2003
Città: Bari
Messaggi: 1325
|
C# - Ricerca files
Ciao a tutti, mi sto cimentando da poco sul C# e volevo creare un programmino che individuasse files uguali all'interno di un percorso, analizzando anche le sottodir.
Inizialmente ho scritto il programma, e in un punto ho utilizzato questa: Codice:
foreach (string filePath in Directory.EnumerateFiles(Percorso, "*", SearchOption.AllDirectories)) { ListaFiles.Add(new FileInfo(filePath)); }
Allora ho pensato di far da me un sistema per cercare i files e ho trovato un algoritmo su msdn che ho modificato in modo da ottenere alla fine una lista di FileInfo: Codice:
public class RecursiveFileSearch
{
static System.Collections.Specialized.StringCollection log = new System.Collections.Specialized.StringCollection();
static void Main()
{
System.IO.DirectoryInfo rootDir = new DirectoryInfo(@"F:\Disegni\");
System.IO.FileInfo[] ListaFiles = null;
ListaFiles= WalkDirectoryTree(rootDir, ListaFiles);
// Write out all the files that could not be processed.
Console.WriteLine("Files with restricted access:");
foreach (string s in log)
{
Console.WriteLine(s);
}
// Keep the console window open in debug mode.
Console.WriteLine("Press any key");
Console.ReadKey();
}
static FileInfo[] WalkDirectoryTree(System.IO.DirectoryInfo root, FileInfo[] files)
{
System.IO.DirectoryInfo[] subDirs = null;
FileInfo[] AllResults = null;
// First, process all the files directly under this folder
try
{
FileInfo[] filesSottoDir = root.GetFiles("*.*");
AllResults = new FileInfo[files.Length + filesSottoDir.Length];
files.CopyTo(AllResults, 0);
filesSottoDir.CopyTo(AllResults, files.Length);
}
// This is thrown if even one of the files requires permissions greater
// than the application provides.
catch (UnauthorizedAccessException e)
{
// This code just writes out the message and continues to recurse.
// You may decide to do something different here. For example, you
// can try to elevate your privileges and access the file again.
log.Add(e.Message);
}
catch (System.IO.DirectoryNotFoundException e)
{
//Console.WriteLine(e.Message);
}
catch { }
// Now find all the subdirectories under this directory.
try
{
subDirs = root.GetDirectories();
}
catch { }
foreach (System.IO.DirectoryInfo dirInfo in subDirs)
{
// Resursive call for each subdirectory.
AllResults = WalkDirectoryTree(dirInfo, AllResults);
}
return AllResults;
}
}
}
Il problema è che non funziona niente, qualcuno potrebbe aiutarmi? Non riesco a capire perchè non entra nel blocco di ricerca dei files.. grazie
__________________
|
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2003
Città: Bari
Messaggi: 1325
|
ho cercato ed è un problema comune a tutti :\
__________________
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2003
Città: Bari
Messaggi: 1325
|
c'è nessuuuno?
__________________
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2003
Città: Bari
Messaggi: 1325
|
ok ho risolto cmq :P
__________________
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2003
Città: Bari
Messaggi: 1325
|
Sto avendo un altro problema, in pratica ho fatto un'interfaccia con windows forms, e cliccando sul button scansione viene eseguito l'algoritmo di ricerca e visualizzati i risultati. Al click voglio anche che appaia un'immagine di caricamento, infatti come prima istruzione inserisco:
pictureBox1.Image = Image.FromFile(Application.StartupPath + "/Images/picture.jpg"); Dopo di che avviene tutta la ricerca. Il problema è che l'immagine compare solo se interrompo l'algoritmo con una messagebox, altrimenti va tutto a buon fine ma non appare questa dannata immagine. Come posso risolvere? Ho provato anche a mettere uno sleep per permettere il caricamento dell'immagine, ma non cambia nulla, non riesco a capire.. :\
__________________
Ultima modifica di Silent killer : 21-03-2012 alle 12:35. |
|
|
|
|
|
#7 | |
|
Member
Iscritto dal: May 2009
Messaggi: 186
|
Quote:
Codice:
pictureBox1.Refresh(); Ultima modifica di ESSE-EFFE : 21-03-2012 alle 14:30. |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2003
Città: Bari
Messaggi: 1325
|
grande, funziona!
__________________
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2003
Città: Bari
Messaggi: 1325
|
altro problema.
foreach (string percorso in checkedListBox1.SelectedItems) { FileInfo file = new FileInfo(percorso); file.Delete(); } Ho scoperto che in SelectedItems c'è sempre e solo un elemento, anche se seleziono più elementi tra i risultati. Perchè? Non dovrebbe restituirmi la lista di tutti gli oggetti selezionati nella checkedListBox?
__________________
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2003
Città: Bari
Messaggi: 1325
|
ho trovato che la checkedListBox non supporta la multi selection... quindi non serve ad una benemerita mazza :\ Come posso ovviare?
edit: ho usato una listView, ma non è un granchè
__________________
Ultima modifica di Silent killer : 22-03-2012 alle 16:04. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:55.




















