Autore Topic: Contare linee di un file txt  (Letto 1162 volte)

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Contare linee di un file txt
« il: 12 Ottobre 2011, 19:51:51 CEST »
0
Ho il seguente problema:
Un file composta da 45.000 righe da importare in un database.
Dato che uso una progress bar per mostrare l'import, vorrei impostare la proprietà setmax al numero totale di linee del file.
Purtroppo l'unico modo che conosco, è l'inserimento di un ciclo while con una variabile contatore , ma ci mette troppo tempo.
 o_O
Qualcuno ha qualche idea ?
Grazie
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Contare linee di un file txt
« Risposta #1 il: 12 Ottobre 2011, 20:59:06 CEST »
0
Non ho capito qual'è il tuo problema, se sapere la lunghezza del file o usare la progressbar.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Contare linee di un file txt
« Risposta #2 il: 13 Ottobre 2011, 09:03:05 CEST »
0
Provo a spiegarmi da umano: :-)

Ho bisogno di sapere in anticipo(prima dell'importazione nel db)il numero di righe di un file.
Perchè ?
Vorrei impostare la proprietà setmax=numerorighetotali in modo da vedere l'incremento della progressbar reale cioè per ogni singolo record.
Spero di essere stato chiaro.
Grazie
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Contare linee di un file txt
« Risposta #3 il: 13 Ottobre 2011, 09:50:46 CEST »
0

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Contare linee di un file txt
« Risposta #4 il: 13 Ottobre 2011, 11:57:31 CEST »
0
Grazie teskio,
ma non fa quello che avrei voluto, cioè :
TotalLine=oggetto.gettotalline();

Ho risolto così anche se non mi piace:
Codice: [Seleziona]
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
//prima conto le righe
                               
                               
while ((line = br.readLine()) != null)
{
    TotalLine++;
}
prbConta.setMax(TotalLine);
Dopo parto con l'altro ciclo che esporta ed incrementa la progress
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Contare linee di un file txt
« Risposta #5 il: 13 Ottobre 2011, 12:03:56 CEST »
0
Dopo parto con l'altro ciclo che esporta ed incrementa la progress

Giusto per curiosità, quanto ci mette a contare le righe?

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Contare linee di un file txt
« Risposta #6 il: 13 Ottobre 2011, 12:16:57 CEST »
0
Inizio lettura: 10:12:46:963
Fine lettura:   10:12:49:244

sui 2 secondi  e 3 centesimi
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Contare linee di un file txt
« Risposta #7 il: 13 Ottobre 2011, 12:19:14 CEST »
0
sui 2 secondi  e 3 centesimi

Quindi ci vuole un progress dialog anche per quello :D

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Contare linee di un file txt
« Risposta #8 il: 13 Ottobre 2011, 12:23:50 CEST »
+1
Ho bisogno di sapere in anticipo(prima dell'importazione nel db)il numero di righe di un file.
Perchè ?
Vorrei impostare la proprietà setmax=numerorighetotali in modo da vedere l'incremento della progressbar reale cioè per ogni singolo record.
Spero di essere stato chiaro.

In realtà tu NON hai bisogno di sapere il numero esatto di righe da importare. Perchè nessuno controllerà che la progressBar è esattamente nel punto in cui deve essere.

A te basta dare all'utente una indicazione di massima del progress dell'operazione.

Unica cosa che devi sapere è la lunghezza media di una riga di questo database, mettiamo che mediamente ciascuna riga da inserire occupi 40 caratteri nel file TXT. Il numero di righe "stimato" sarà filesize('db.txt')/40. Usando questa approssimazione, ottieni un valore "usabile" anche se poi le righe si rivelano mediamente di 20 o 60, in tali casi quello che l'utente vedrà è che magari l'operazione termina con la barra all'80%, ma d'altra parte non credo proprio che si lamenterà di ciò. I vantaggi che hai usando questa stima sono abbastanza ovvi, hai trasformato una operazione di complessità O(n) in O(1), cioè ci metti lo stesso (ridottissimo) tempo per file di qualsiasi dimensione.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Contare linee di un file txt
« Risposta #9 il: 13 Ottobre 2011, 12:30:46 CEST »
0
Bradipao:
Si hai ragione in realta la parola massima consentita è lunga 10 caratteri.
Il file che sto importando ora sono parole inglesi e sono 45.000 parole
Vi farò sapere i tempi di importazione nel db.
Userò il tuo consiglio, anche perchè la prossima importazione e composta da parole italiane e sono 245.000 righe.

Tempi importazione database:
righe=45.000
Campi del db 3
Inizio Import: 10:36:54
Fine Import:   10:46:31

Circa 12 minuti
 
« Ultima modifica: 13 Ottobre 2011, 13:11:22 CEST da Luigi.Arena, Reason: Tempistica Importazione database »
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .