Ler ficheiro de texto

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

Ler ficheiro de texto

Mensagempor raqh » Sexta Mai 01, 2009 22:19

Olá pessoal!

Estou a precisar muito da vossa ajuda. Aqui em baixo envio-vos o metodo "lerficheiro", trata-se de um ficheiro que contém um texto longo tipo uma história. O que eu quero fazer é armazenar numa tabela de strings unidimensional cada palavra desse texto. Só que não está a funcionar :(
Alguem me pode ajudar?

Obrigado a todos.

Código: Seleccionar todos
public static void lerficheiro()
   {
      try
      {
         File ficheiro = new File ("hist1.txt");
         FileReader leitorDeFicheiro = new FileReader(ficheiro);
         BufferedReader buff = new BufferedReader (leitorDeFicheiro);
         
         int n;
         String[] x= new String [n];
         

         String linhaLida;
         linhaLida=buff.readLine();
            
            while(linhaLida!=null)
            {
               linhaLida=buff.readLine();
               
               java.util.StringTokenizer coupeur = new java.util.StringTokenizer(linhaLida, " ");
               
               while (coupeur.hasMoreTokens())
               {
                  System.out.println(coupeur.nextToken());
               
                  for(int k = 0; k <x.length; k++)
                  {
                     x[k]=coupeur.nextToken();
                  }
               
               }
            }
         
         buff.close();
      }   
      catch (Exception er)
      {
         System.out.println(er);
      }
   }
raqh
Novato
Novato
 
Mensagens: 15
Registado: Sábado Abr 04, 2009 17:43

Mensagempor LMX » Sábado Mai 02, 2009 1:46

Boas..
ja algum tempo que nao toco em java , mas esai ai pelo menos dois erros,

linhaLida=buff.readLine();

while(linhaLida!=null)
{
linhaLida=buff.readLine();

se a primeira linha nao for nula vais ler outra portanto esta ja nunca vai entrar no array que estas a criar, depois,
System.out.println(coupeur.nextToken());

for(int k = 0; k <x.length; k++)
{
x[k]=coupeur.nextToken();
se ouver mais tokens, printas na consolao proximo token, mas o que guardas no array ja nao é este mas sim o seguinte, partindo do principio que existe e se nao existir????

Cumprimentos
De pé mas...Cansado!!!
LMX
Membro de Ouro
Membro de Ouro
 
Mensagens: 786
Registado: Quarta Out 20, 2004 21:16
Localização: Lisboa

Mensagempor raqh » Sábado Mai 02, 2009 11:27

Olá!

Obrigada pelas dicas. Fiz algumas modificacoes.

O problema agora é que ele não mostra as palavras contidas no arraylist quando executo...:roll: Não sei se o metodo mostrar está correcto.

Aqui vai o meu codigo:

Código: Seleccionar todos

import java.io.*;
import java.util.*;
public class Ficheiro
{
   
   public static void lerficheiro()
   {
      ArrayList<String> a= new ArrayList <String>();
      try
      {
         File ficheiro = new File ("hist1.txt");
         FileReader leitorDeFicheiro = new FileReader(ficheiro);
         BufferedReader buff = new BufferedReader (leitorDeFicheiro);
         
         
         String linhaLida;
         linhaLida=buff.readLine();
            
            while(linhaLida!=null)
            {
               
               StringTokenizer st = new StringTokenizer(linhaLida, " ( ) ,.;:-_!?'");
               
               linhaLida=buff.readLine();
               
               while (st.hasMoreTokens())
               {
                  for (int i=0; i<a.size(); i++)
                  {
                     a.add(i, new String(st.nextToken()));
                  }
                     
               }
               mostrar(a);
            }
         
         buff.close();
      }   
      catch (Exception er)
      {
         System.out.println(er);
      }
   }


   public static void mostrar(ArrayList <String> b)
   {
      for (int i=0; i<b.size(); i++)
      {
         System.out.println("Mot: "+b.get(i));
         
      }
   }
   
   public static void main(String[] args)
   {
      lerficheiro();
   }   
}


Desde já obrigada pela vossa ajuda.
raqh
Novato
Novato
 
Mensagens: 15
Registado: Sábado Abr 04, 2009 17:43

Mensagempor vamosAeles » Domingo Mai 03, 2009 19:52

Boas,

sim, o array vai estar vazio devido a:

Código: Seleccionar todos
while (st.hasMoreTokens())
               {
                  for (int i=0; i<a.size(); i++)
                  {
                     a.add(i, new String(st.nextToken()));
                  }
                     
               }


Como o arrayList esta vazio no principio, nunca vai entrar dentro desse ciclo.
Se o q queres é colocar nesse array, a sequencia de palavras, experimenta substituir o codigo acima por:
Código: Seleccionar todos
while (st.hasMoreTokens())
               {
                 
                     a.add(st.nextToken());
                 
                     
               }



[[[]]]
vamosAeles
Membro de Prata
Membro de Prata
 
Mensagens: 206
Registado: Quarta Jan 04, 2006 21:29
Localização: Lisboa/Proença


Voltar para Programação

Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante

cron