Problema com Leitura de arquivo

19 respostas
H

Estou tentando ler os atores presentes em cada filme, porém atores.size() retorna 109, alguem sabe pq?

Hashtable atores = new Hashtable();

Scanner f = new Scanner(new File("input-top-grossing.txt")); while (f.hasNext()) { String linha = f.nextLine(); String[] elementos = linha.split("/"); for (int i = 1; i < elementos.length; i++) { Vector filmeAtor = new Vector(); atores.put(elementos[i], filmeAtor); } } System.out.println(atores); System.out.println(atores.size()); }

Aqui vai o link do .txt de entrada http://personal.denison.edu/~havill/111f09/projects/proj7/files/input-top-grossing.txt

19 Respostas

S

Cara, Só para temos um rumo:
A resposta deve ser quanto?

Rodrigo_Sasaki

hmm… porque existem 109 atores? :lol:

JuniorMaia

dei uma olhada no arquivo, e chutando baixo, aquilo tme no minimo uns 300 atores kkkkkk

Rodrigo_Sasaki

Rodei o seu código com o seu arquivo, e pra mim foram adicionados 8264 atores.

Não alterei nenhuma linha de código, só adicionei o bloco try/catch para tratar a FileNotFoundException

denisspitfire

acho que quando entra em outra linha ele esta se perdendo… o correto seria cada um em uma linha

denisspitfire

digaoneves:
Rodei o seu código com o seu arquivo, e pra mim foram adicionados 8264 atores.

Não alterei nenhuma linha de código, só adicionei o bloco try/catch para tratar a FileNotFoundException

what?? pq try e catch resolve o problema? :shock:

Magias do java kkkk

CristianPalmaSola10

No meu exibe a quantidade de 9921

try {
            FileInputStream input = new FileInputStream(new File("C:/atores.txt"));
            
            byte[] b = new byte[input.available()];
            input.read(b);
            
            String[] atores = new String(b).split("/");
            
            System.out.println(atores.length);
            System.out.println(new String(b));
        } catch (Exception e) {
            e.printStackTrace();
        }
Rodrigo_Sasaki

denisspitfire:
digaoneves:
Rodei o seu código com o seu arquivo, e pra mim foram adicionados 8264 atores.

Não alterei nenhuma linha de código, só adicionei o bloco try/catch para tratar a FileNotFoundException

what?? pq try e catch resolve o problema? :shock:

Magias do java kkkk

Não é que resolve o problema, ele não compila se a exceção não for tratada, acho que o autor não colocou o try/catch no post por algum motivo, talvez ele tenha usado throws.

denisspitfire

a questão é porque volta 109 e nao o valor correto

denisspitfire

aqui também deu 9921

Rodrigo_Sasaki

Vocês estão pegando o nome dos filmes também, note que ele começa a iteração no 1, e não no 0.

denisspitfire

aff nem percebi passei direto no detalhe

Rodrigo_Sasaki

E é um Hashtable também, se houverem atores repetidos, eles não serão incluídos mais de uma vez.

denisspitfire

tenho um disparador de e-mail, ele esta enviando os e-mails apartir de um result set, seria melhor usar um hashtable ou dar ja um select pegando só valores nao repetidos?

Rodrigo_Sasaki

Se você quiser evitar repetição de dados, e a ordem dos dados não importa pra você, eu sugiro que use coleções Hash, pois são até mais rápidas.

H
digaoneves:
Rodei o seu código com o seu arquivo, e pra mim foram adicionados 8264 atores.

Não alterei nenhuma linha de código, só adicionei o bloco try/catch para tratar a FileNotFoundException

digao, meu codigo ta assim

public static void main(String[] args) {  
            // TODO code application logic here  
      
            Hashtable atores = new Hashtable();  
      
        try {  
            Scanner f = new Scanner(new File("input-top-grossing.txt"));    
            while (f.hasNext())    
            {    
                String linha = f.nextLine();    
                String[] elementos = linha.split("/");    
                for (int i = 1; i < elementos.length; i++)    
                {    
                                Vector filmeAtor = new Vector();    
                                atores.put(elementos[i], filmeAtor);      
                }  
            }  
         } catch (IOException e) {  
                System.out.print("Erro na abertura do arquivo!");  
            }  
            //System.out.println(atores);   
            System.out.println(atores.size());  
            }

porem retorna 109 como tamanho oO

Rodrigo_Sasaki
Hyzek:
digaoneves:
Rodei o seu código com o seu arquivo, e pra mim foram adicionados 8264 atores.

Não alterei nenhuma linha de código, só adicionei o bloco try/catch para tratar a FileNotFoundException

digao, meu codigo ta assim

public static void main(String[] args) {  
            // TODO code application logic here  
      
            Hashtable atores = new Hashtable();  
      
        try {  
            Scanner f = new Scanner(new File("input-top-grossing.txt"));    
            while (f.hasNext())    
            {    
                String linha = f.nextLine();    
                String[] elementos = linha.split("/");    
                for (int i = 1; i < elementos.length; i++)    
                {    
                                Vector filmeAtor = new Vector();    
                                atores.put(elementos[i], filmeAtor);      
                }  
            }  
         } catch (IOException e) {  
                System.out.print("Erro na abertura do arquivo!");  
            }  
            //System.out.println(atores);   
            System.out.println(atores.size());  
            }

porem retorna 109 como tamanho oO

Só pra desencargo de consciência tente com BufferedReader.
File file = new File("input-top-grossing.txt");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String linha = "";
while((linha = bufferedReader.readLine()) != null){
    // seu processamento linha a linha aqui.
}
H
digaoneves:
Hyzek:
digaoneves:
Rodei o seu código com o seu arquivo, e pra mim foram adicionados 8264 atores.

Não alterei nenhuma linha de código, só adicionei o bloco try/catch para tratar a FileNotFoundException

digao, meu codigo ta assim

public static void main(String[] args) {  
            // TODO code application logic here  
      
            Hashtable atores = new Hashtable();  
      
        try {  
            Scanner f = new Scanner(new File("input-top-grossing.txt"));    
            while (f.hasNext())    
            {    
                String linha = f.nextLine();    
                String[] elementos = linha.split("/");    
                for (int i = 1; i < elementos.length; i++)    
                {    
                                Vector filmeAtor = new Vector();    
                                atores.put(elementos[i], filmeAtor);      
                }  
            }  
         } catch (IOException e) {  
                System.out.print("Erro na abertura do arquivo!");  
            }  
            //System.out.println(atores);   
            System.out.println(atores.size());  
            }

porem retorna 109 como tamanho oO

Só pra desencargo de consciência tente com BufferedReader.
File file = new File("input-top-grossing.txt");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String linha = "";
while((linha = bufferedReader.readLine()) != null){
    // seu processamento linha a linha aqui.
}

Com BufferedReader deu certo! :shock:

Obrigado!!!!!!!!

Rodrigo_Sasaki

Muito estranho isso hehee… mas que bom que foi!

mas lembre-se que com seu código tudo funcionou normalmente pra mim.

Criado 16 de maio de 2012
Ultima resposta 17 de mai. de 2012
Respostas 19
Participantes 6