Pegar uma posição aleatória de um arquivo .txt

2 respostas
Desperate_Housewife

Olá pessoal!

É o seguinte: tenho um determinado arquivo .txt que contém uma lista de nomes de arquivos .mp3.
Eu criei uma função que adiciona cinco desses nomes a um ArrayList.
No momento está sendo adicionado somente as cinco primeiras linhas, mas eu quero que ele pegue o nome de cinco
arquivos aleatórios.
Eu pensei em fazer da seguinte forma: meu arquivo tem 135 linhas, então eu pego um número aleatório entre 1 e 135. Esse número representa a linha correspondente
ao nome do arquivo. Aí, eu o adiciono ao meu ArrayList.

public void loadFiles ()
	{
		File f = new File ("D://Files.txt");
		try 
		{
			BufferedReader in = new BufferedReader(new FileReader(f));  
            String line = null;  
			/*Random r = new Random();
			int a = r.nextInt(135); Gero o número aleatório da linha*/
            for (int count = 0; count < 5; count ++)
			{
				line = in.readLine(); 
				files.add(line); 
				System.out.println("Add in my disk the file " + files.get(count));				
			}
        } 
		catch (Exception e) 
		{
			
		}
	}

Minha pergunta é: como eu faço para ler essa determinada linha que obter a partir do momento que gerar esse número?

2 Respostas

A

cara,

pq vc ja nao le esse seu arquivo todo e coloca cada linha numa posicao do arraylist, pq qdo vc fizer o radom, ai é so pegar a posicao do arraylist correspondente. bem mais eficiente que vc ficar toda hora lendo arquivo.

t+

Vingdel

Olá, veja se assim serve:

public void loadFiles (){
	File f = new File ("D://Files.txt");
	try{
		BufferedReader in = new BufferedReader(new FileReader(f));  
		String line = null;  
		Random r = new Random();
		int a = r.nextInt(135); //Gero o número aleatório da linha
		for (int count = 0; count <= a; count ++){
			line = in.readLine();
			if(count == a){
				files.add(line); 
				System.out.println("Add in my disk the file " + files.get(count));
			}
		}
	}catch (Exception e){
			
	}
}

As linhas dentro do IF poderiam ser colocadas após o FOR, mas do jeito que está é mais seguro que a linha escolhida pelo Random será a que vai ser adicionada.

Abraço!

Criado 16 de outubro de 2011
Ultima resposta 16 de out. de 2011
Respostas 2
Participantes 3