Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Leggere SOLO .txt
Forum - C# / VB.NET - Leggere SOLO .txt

Avatar
Teolo (Normal User)
Newbie


Messaggi: 17
Iscritto: 22/11/2009

Segnala al moderatore
Postato alle 13:21
Domenica, 22/11/2009
Salve a tutti;
mi servirebbe un aiuto con questo pezzo di codice, è tutta mattina che ci ragiono ma niente!

dir = Application.StartupPath;
DirectoryInfo myd = new DirectoryInfo(dir);
            System.IO.FileInfo[] f = myd.GetFiles("*.txt");
dir1= dir + f
            try
            {
                StreamReader read = new StreamReader(dir1);
                while (!read.EndOfStream)
                listBox1.Items.Add(read.ReadLine());
                read.Close();
            }
            catch
            {
                MessageBox.Show("Nessun foglio trovato");
            }

In poche parole,vorrei che tutti i .txt che ci siano in quella determinata directory (dir) vengano visualizzati in una listbox..però non riesco, qualche suggerimento?

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:28
Domenica, 22/11/2009
f è un array di oggetti. dir + f sicuramente non è il percorso di un file. Tuttavia, ogni elemento di f contiene una proprietà che indica il percorso del file (Path o FileName, non ricordo). Quindi dovresti usare un for each:
Codice sorgente - presumibilmente C# / VB.NET

  1. foreach(FileInfo file in f)
  2. {
  3.   //leggi file
  4. }


PM Quote
Avatar
Teolo (Normal User)
Newbie


Messaggi: 17
Iscritto: 22/11/2009

Segnala al moderatore
Postato alle 13:31
Domenica, 22/11/2009
Facendo come hai detto te

dir= application.startuppath
DirectoryInfo myd = new DirectoryInfo(dir);
            System.IO.FileInfo[] f = myd.GetFiles("*.txt");
            foreach (FileInfo file in f)
            try
            {
                StreamReader read = new StreamReader(file);
                while (!read.EndOfStream)
                listBox1.Items.Add(read.ReadLine());
                read.Close();

mi dice che è impossibile convertire da fileinfo a string =(
mi sono dimenticato di dirlo, il linguaggio è c#

Ultima modifica effettuata da Teolo il 22/11/2009 alle 14:32
PM Quote
Avatar
Gianluca87 (Ex-Member)
Expert


Messaggi: 300
Iscritto: 16/11/2008

Segnala al moderatore
Postato alle 17:22
Domenica, 22/11/2009
Codice sorgente - presumibilmente C#

  1. string appPath = Application.StartupPath;
  2.             DirectoryInfo dInfo = new DirectoryInfo(appPath);
  3.             FileInfo[] Files = dInfo.GetFiles("*.txt");
  4.             foreach (FileInfo File in Files)
  5.             {
  6.                 StreamReader read = new StreamReader(File.FullName);
  7.             }



File.FullName leggi la prop FullName di FileInfo

PM Quote
Avatar
Teolo (Normal User)
Newbie


Messaggi: 17
Iscritto: 22/11/2009

Segnala al moderatore
Postato alle 18:37
Domenica, 22/11/2009
funziona, grazie mille =D

PM Quote
Avatar
Teolo (Normal User)
Newbie


Messaggi: 17
Iscritto: 22/11/2009

Segnala al moderatore
Postato alle 20:41
Domenica, 22/11/2009
Un'ultima cosa
dopo aver inserito questo codice (giusto grazie a voi ;))

DirectoryInfo dInfo = new DirectoryInfo(appPath);
            FileInfo[] Files = dInfo.GetFiles("*.txt");
            foreach (FileInfo File in Files)
            {
                
               StreamReader read = new StreamReader (File.FullName);
                while (!read.EndOfStream)
                    listBox1.Items.Add(read.ReadLine());
            read.Close();
volevo inserire un if, per far si che lui legga tutti i nomi dei file presenti nella appPath, faccia il confronto con la data odierna, e faccia leggere SOLO quelli che risultano uguali o maggiori con la data odierna..non sò come mettere giù l'if..cosa consigliate?

PM Quote
Avatar
Gianluca87 (Ex-Member)
Expert


Messaggi: 300
Iscritto: 16/11/2008

Segnala al moderatore
Postato alle 21:05
Domenica, 22/11/2009
i nomi dei file dovranno necessariamente essere sempre dd.MM.yyyy.txt
con questo sistema scremi l'array di file prima di eseguire il ciclo, quindi non hai bisogno di fare controlli interni al ciclo e iterare su elementi che devono essere selezionati.
Codice sorgente - presumibilmente C#

  1. DirectoryInfo dInfo = new DirectoryInfo(Application.StartupPath);
  2.             FileInfo[] Files = dInfo.GetFiles("*.txt");
  3.             Files = Files.Where(file => DateTime.ParseExact(file.Name.Substring(0, 10), "dd.MM.yyyy", null) > DateTime.Now).ToArray();
  4.             foreach (FileInfo File in Files)
  5.             {
  6.  
  7.                 StreamReader read = new StreamReader(File.FullName);
  8.                 while (!read.EndOfStream)
  9.                 { }
  10.                 read.Close();
  11.             }



Gianluca87 ha allegato un file: WindowsFormsApplication3.zip (40098 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da Gianluca87 il 22/11/2009 alle 22:03
PM Quote