Louise Posted May 14, 2008 at 11:26 AM Report Share #185003 Posted May 14, 2008 at 11:26 AM Eu precisava de ler uma determinada linha do ficheiro fiz FileReader ler = new FileReader("Novo.txt"); LineNumberReader line = new LineNumberReader(ler); line.setLineNumber(2); //escolho a linha 2 System.out.println(line.readLine()); // imprime a linha 1 Bigada Link to comment Share on other sites More sharing options...
magician Posted May 14, 2008 at 01:29 PM Report Share #185035 Posted May 14, 2008 at 01:29 PM Nunca usei essa classe alias isso para mim é novidade lol. Mas realmente o código parece bem segundo a API. Tenta meter outros números no setLineNumber e depois faz gets para ver os resultados. I haven’t lost my mind; it’s backed up on DVD somewhere! Link to comment Share on other sites More sharing options...
Louise Posted May 14, 2008 at 07:11 PM Author Report Share #185118 Posted May 14, 2008 at 07:11 PM Eu por aki nao consigo chegar lá. O problema é o seguinte: O ficheiro é muito grande e nao consigo manter todo em memoria entao keria ir lendo apenas as linhas k preciso. Existe alguma forma de fazer isso???? Link to comment Share on other sites More sharing options...
magician Posted May 14, 2008 at 08:15 PM Report Share #185142 Posted May 14, 2008 at 08:15 PM :S é complicado podes mostrar um excerto do ficheiro pode ser que dê alguma ideia de como processar isso. I haven’t lost my mind; it’s backed up on DVD somewhere! Link to comment Share on other sites More sharing options...
Louise Posted May 14, 2008 at 10:33 PM Author Report Share #185188 Posted May 14, 2008 at 10:33 PM klaro os ficheiros estao neste site (na realidade o codigo trabalha kom 3 ficheiros) http://www.dis.uniroma1.it/~challenge9/download.shtml Distance graph, Travel time graph, Coordinates Link to comment Share on other sites More sharing options...
magician Posted May 15, 2008 at 12:37 PM Report Share #185279 Posted May 15, 2008 at 12:37 PM Isto responde ao teu problema porque isso não funciona. The LineNumberReader class has two methods pertaining to line numbers. The getLineNumber() method returns the current line number. If you want to change the current line number of a LineNumberReader, use setLineNumber(). This method does not affect the stream position; it merely sets the value of the line number. import java.io.LineNumberReader; import java.io.FileReader; public class Leitor{ public LineNumberReader line; public Leitor() throws Exception { this.line = new LineNumberReader( new FileReader("Novo.txt") ); } public static void main(String args []){ try{ Leitor l = new Leitor(); int linha = 3; if(linha-1 < l.line.getLineNumber()){ l.line.reset(); } while( l.line.getLineNumber() != linha-1){ l.line.readLine(); } System.out.println(l.line.readLine()); } catch(Exception e){ System.err.println(e.getMessage()); } } } Isto é uma solução 1 bocado a martelo mas faz +- o que queres embora acredito que não seja a melhor opção. I haven’t lost my mind; it’s backed up on DVD somewhere! Link to comment Share on other sites More sharing options...
Louise Posted May 15, 2008 at 11:22 PM Author Report Share #185412 Posted May 15, 2008 at 11:22 PM Bigada. Ta a funcionar. Sinceramente nao tou a ver uma alternativa melhor. Carregar tudo em memoria so kom arrays nativos é k aguenta. Bjs Link to comment Share on other sites More sharing options...
Knitter Posted May 17, 2008 at 12:14 PM Report Share #185632 Posted May 17, 2008 at 12:14 PM Não estou a perceber porque é que terias de carregar tudo para memória. Uma intância da classe File não representa um ficheiro mas apenas um nome de um ficheiro que pode ou não existir, nada do ficheiro é carregado para memória. Se usares uma stream, apenas os dados que ocuparem o buffer usado é que estarão em memória, a não ser que o ficheiro seja muito pequeno, nunca vai estar todo em memória. O processamento completo de um ficheiro grande poderá causar alguns problemas de velocidade, mas isso implicaria que por cada linha/palavra estarias a processar esse conteúdo, como não me parece que seja isso que esteja a acontecer, não consigo ver qualquer problema em ler o ficheiro todo e processar apenas o que interessa. Se achas que terás problemas de performance então deverias estar a usar o package java.nio e não o java.io. Terias mais controlo sobre o que estás a ler e como estás a ler. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Louise Posted May 19, 2008 at 11:03 AM Author Report Share #186035 Posted May 19, 2008 at 11:03 AM Não estou a perceber porque é que terias de carregar tudo para memória. Uma intância da classe File não representa um ficheiro mas apenas um nome de um ficheiro que pode ou não existir, nada do ficheiro é carregado para memória. Se usares uma stream, apenas os dados que ocuparem o buffer usado é que estarão em memória, a não ser que o ficheiro seja muito pequeno, nunca vai estar todo em memória. O processamento completo de um ficheiro grande poderá causar alguns problemas de velocidade, mas isso implicaria que por cada linha/palavra estarias a processar esse conteúdo, como não me parece que seja isso que esteja a acontecer, não consigo ver qualquer problema em ler o ficheiro todo e processar apenas o que interessa. Se achas que terás problemas de performance então deverias estar a usar o package java.nio e não o java.io. Terias mais controlo sobre o que estás a ler e como estás a ler. Boas. Eu tenho de fazer um tipo de gps usando os mapa que estão no ficheiro. Depois com os dados lidos tenho de aplicar o algoritmo Dijkstra. Embora eu seja uma novata em java axo k tenho de ter os dados em memoria pra aplicar o algoritmo. Pelo o k eu percebi do ficheiro eu tenho de ir aos no de chegada e ir tirando os vizinhos ate chegar ao no de origem. Como isto esta um pouco confuso se preferires posso mostrar o enunciado Link to comment Share on other sites More sharing options...
Knitter Posted May 19, 2008 at 12:16 PM Report Share #186045 Posted May 19, 2008 at 12:16 PM Nesse caso o problema não está em ler o ficheiro, mas sim e encontrar uma forma optimizada para ter os dados que precisas em memória. Parece-me que estás a tentar resolver um problema que não existe, o de memória consumida a ler o ficheiro. Não sei bem que ideia tens para a resolução do problema, mas no que toca a leitura de ficheiro não haveria qualquer problema de consumo de memória, e foi apenas esse ponto que foquei. Estavas a ter dificuldades a fazer algo que não precisavas fazer 🙂 www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now