Lettura e controllo file txt

di il
7 risposte

Lettura e controllo file txt

Buongiorno a tutti,
questo è il mio quesito.

Dovrei leggere un file txt il cui nome ogni volta cambia ma è sempre nella stessa directory.

Questo file contiene n record ma tutti della stessa lunghezza (67 caratteri alfa numerici)

Dovrei leggere tutte le righe del file txt ed intercettare gli eventuali record che sono più lunghi o più corti dei 67 caratteri di default.

Mi sembra di capire che si parta dalla lettura del file, ma poi come gli dico di controllare se tutti i record sono lunghi 67 ?? Con Len del metodo string ?

Dim textfile As File
Dim FileReader As System.IO.StreamReader
Dim lineRead As String

FileReader = textfile.OpenText(...qui dovremi mettere il file txt, ma variando sempre il nome non saprei come fare)

While FileReader.Peek <> -1
lineRead = FileReader.ReadLine()

End While
FileReader.Close()

Grazie.

7 Risposte

  • Re: Lettura e controllo file txt

    xamm ha scritto:


    Dovrei leggere un file txt il cui nome ogni volta cambia ma è sempre nella stessa directory.
    Anche presumendo che il nome cambi, ci sarà una regola con la quale è possibile stabilire con precisione qual è il nome del file di testo da leggere, giusto? Se sì, qual è questa regola?

    xamm ha scritto:


    Dovrei leggere tutte le righe del file txt ed intercettare gli eventuali record che sono più lunghi o più corti dei 67 caratteri di default.
    Quando intercetti la condizione, cosa devi fare in seguito? Cioè, come devi fattivamente gestire l'occorrenza di un record che non corrisponde alle specifiche? Scrivere qualcosa in output? o su un file?

    xamm ha scritto:


    Mi sembra di capire che si parta dalla lettura del file, ma poi come gli dico di controllare se tutti i record sono lunghi 67 ?? Con Len del metodo string ?
    Direi che usare la proprietà Length della stringa sia la strada più semplice per determinare la lunghezza in numero di caratteri.

    Per il resto, tutto dipende dalla necessità o meno di gestire casi particolari (es. spazi iniziali e finali da ignorare e così via).

    xamm ha scritto:


    FileReader = textfile.OpenText(...qui dovremi mettere il file txt, ma variando sempre il nome non saprei come fare)
    Come predetto, ci deve essere un criterio per capire qual è il nome del file di testo da aprire.

    Potrebbe essere l'unico presente nella directory, o l'unico con una certa estensione... qui è il richiedente che deve definire appunto il requisito, la specifica che rende preciso questo criterio.

    Mi sembra comunque che tu stia affrontando troppi problemi in una volta: partiamo dalla selezione del file, innanzitutto, poi dalla sua apertura/chiusura, infine parliamo della lettura riga per riga e del controllo delle singole linee.

    Fai una cosa alla volta, verificando che sia corretta, e poi si passa oltre quando assodato che tutto è funzionante.

    Ciao!
  • Re: Lettura e controllo file txt

    Perfetto Marco e grazie della risposta.

    Allora, il file txt è sempre nella stessa directory che seleziono io manualmente ma che è sempre diverso nel nome

    Dim Mia As New IO.DirectoryInfo(folder.SelectedPath)
    Dim files As String() = Directory.GetFiles(folder.SelectedPath, "*.txt")
  • Re: Lettura e controllo file txt

    Scusami....ed è sempre e solo un file txt
  • Re: Lettura e controllo file txt

    xamm ha scritto:


    Allora, il file txt è sempre nella stessa directory che seleziono io manualmente ma che è sempre diverso nel nome
    Ok, ma ci sono anche altri file nella directory?
    Quel file di testo è l'unico presente con quella estensione?
  • Re: Lettura e controllo file txt

    Si, ci sono anche n file .tif con nomi sempre diversi ed un solo file .txt anch'esso ogni volta con un nome diverso.
  • Re: Lettura e controllo file txt

    Trova il file con GetFiles e la maschera *.txt
  • Re: Lettura e controllo file txt

    xamm ha scritto:


    Si, ci sono anche n file .tif con nomi sempre diversi ed un solo file .txt anch'esso ogni volta con un nome diverso.
    In tal caso, come avevi poi già scritto ed è stato ribadito, puoi usare specificando la maschera di ricerca come parametro.

    Quello che ottieni è l'array dei percorsi completi dei file che si trovano nella directory: eventualmente accertati che ci sia solo un elemento, in modo da segnalare all'utente la possibile presenza di una ambiguità (ossia che non sai quale file prendere con certezza perché ve ne sono più di uno che corrispondono al filtro impostato).

    Una volta che hai il percorso del file, puoi aprirlo in lettura usando ad esempio il metodo statico e sfruttare i metodi dell'oggetto StreamReader per leggere il contenuto del file, interamente oppure già suddiviso in righe, oppure una riga alla volta (consigliato, se il file può essere voluminoso).

    Ciao!
Devi accedere o registrarti per scrivere nel forum
7 risposte