Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137

    Non legge la prima riga

    Sto cercando un modo per leggere i file di testo grandi.Ho trovato un codice in rete che per me è il migliore : http://andreafrancia.it/articoli/large-file-viewer/

    Ci sta un problema però....nella stama mi salta sempre la prima riga come mai?
    Posto il codice

    codice:
    public class LazyFileListModel extends AbstractListModel {
    
        private static Logger logger =
                Logger.getLogger(LazyFileListModel.class.getName());
        private RandomAccessFile lineCounterFile;
        private List<Long> linePositions =
                Collections.synchronizedList(new ArrayList<Long>());
        private RandomAccessFile readerFile;
    
        
        public LazyFileListModel(File file) throws FileNotFoundException {
            this.lineCounterFile = new RandomAccessFile(file, "r");
            this.readerFile = new RandomAccessFile(file, "r");
            Runnable lineCounterThread = new Runnable() {
    
                public void run() {
                    try {
                        String line;
                        while ((line = lineCounterFile.readLine()) != null) {
                            linePositions.add(lineCounterFile.getFilePointer());
                            Thread.yield();
                        }
                        linePositions.remove(linePositions.size() - 1);
                    } catch (IOException ex) {
                        logger.log(Level.SEVERE, "", ex);
                    }
    
                }
            };
            Executors.newSingleThreadExecutor().submit(lineCounterThread);
    
            Runnable firer = new Runnable() {
    
                public void run() {
                    int last = -1;
                    int current = linePositions.size() - 1;
                    if (last < current) {
                        fireIntervalAdded(LazyFileListModel.this, last + 1, current);
                        last = current;
                    }
                }
            };
    
            Executors.newScheduledThreadPool(1).scheduleAtFixedRate(firer, 2, 500,
                    TimeUnit.MILLISECONDS);
        }
    
        public int getSize() {
            return linePositions.size();
        }
    
        public Object getElementAt(int index) {
            try {
                readerFile.seek(linePositions.get(index));
                return String.format("%06d: %s", index, readerFile.readLine());
            } catch (IOException ex) {
                logger.log(Level.SEVERE, "", ex);
                return null;
            }
        }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    nessuno ha soluzioni?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    Suggerimenti?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,325
    Forse sì.
    Nel costruttore, prova ad aggiungere la riga in grassetto:
    codice:
                public void run() {
                    try {
                        String line;
                        linePositions.add( new Long(0) );
                        while ((line = lineCounterFile.readLine()) != null) {
                            linePositions.add(lineCounterFile.getFilePointer());
                            Thread.yield();
                        }
                        linePositions.remove(linePositions.size() - 1);
                    } catch (IOException ex) {
                        logger.log(Level.SEVERE, "", ex);
                    }
    
                }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    FUNZIONA!!!!!! grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.