import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class Teste {
public static void main(String[] args) throws IOException {
//File arquivo = new File("c:/Downloads/temp.txt");
FileReader arquivo2 = new FileReader(new File("c:/Downloads/temp.txt"));
BufferedReader leitor = new BufferedReader(arquivo2);
String linha = leitor.readLine();
}
}
Lendo Arquivo e usando expressao regular?
14 Respostas
Coloca isso em um laço, enquanto a linha for diferente de null ele continua lendo.
String linha = “”;
while((linha = leitor.readLine()) != null){
//faça alguma coisa com a linha aqui
}
Espero ter ajudado…
Ismael Stahelin
érfeito ismael
erro bobo, mas vc me consertou 
tenho outra duvida se vc ou alguem puder me esclarecer…
Estou fazendo assim
ArrayList partes = new ArrayList
porem o eclipse da o erro
Multiple markers at this line
- The type ArrayList is not generic; it cannot be parameterized with arguments
- Syntax error, parameterized types are only available if source level is 5.0
alguem sabe o porque? só podemos usar o operador <> com classes que criamos???
Clica com o botão direito em cima do projeto. Vá em propriedades e depois Java Compiler. Clique em Enable project specific settings e ajuste o compliance level para 5.0.
O erro ocorre porque os fontes estão setados para a versão 1.4 do Java, que ainda não tinha Generics.
8)
Clica com o botão direito em cima do projeto. Vá em propriedades e depois Java Compiler. Clique em Enable project specific settings e ajuste o compliance level para 5.0.
O erro ocorre porque os fontes estão setados para a versão 1.4 do Java, que ainda não tinha Generics.
8)
perfeito mesmo… vlw mesmo cara…
Ismael, aproveitei e fui ler a API do java pra entender melhor sobre a classe Pattern e entendi coisas que ficava voando. como a-zA-Z…
porem uma coisa que nao entendi nem a pau foi a função do sinal de soma, subtração e multiplicação como no caso de nome e dominio, que basicamente diferencia no final no sinal de + e o outro no sinal de *…
poderia explicar essa aqui tb [\.|\-|_] ???
Aproveitando o embalo, gostaria de ajuda de como fazer uma logica para compilar a expressao regular…tipo, quero que meu email aceite dominios .com, .com.br e .org
se eu fizer String domainMask = “[.org][.com][.com.br]”;
ele só retorna true se for .org… .com ou .com.br retorna false (mas essa sintaxe nao é de uniao???)
a validação pro nome e pro nome do servidor estao corretas… agora nao tou conseguindo restringir o nome de dominio para aceitar os tipos que eu quiser… alguem sabe como me ajudar???
Aí você está dizendo que quer um domínio .org.com.com.br e isso com certeza não existe não é mesmo?! Tenta isso: “.org | .com.br | .com” acho que isso deve funcionar, testa e me avisa. 8)
Tenta [(.org)(.com)(.com.br)] na expressão regular…Mas cuidado porque o . = qualquer coisa…Acho que se quer fazer uma expressao para validar email deve ser:
[a-zA-Z0-9]@[a-zA-Z][(.org)(.com)(.com.br)]
vlw pelo pessoal, mas nenhum dos 2 casos funcionou… continua retornando FALSE…
no caso do ismael, dava erro ao usar .com dava erro de INvalid Escape Sequence… ai coloquei \.com mas tb nao funcionou… 
alguem tem mais alguma dica???
e sobre o +, - e *… o que isso significa???
PEssoal, na base da tentativa e erro(muito erros :P)
fiz o comando String domainMask = “[(\.org)|(\.com\.br)|(\.com)+]+”; e funcionou 
porem alguem me explica a função do sinal de * e do sinal de +, principalmente o + repetido no final da String???
editado:
nem tudo é alegria…ele funciona normal 50% apenas… se tiver qualquer outro caractere diferente ele retorna false…mas se tiver .co ou .or ele retorna true pq essa parte da String esta inclusa no total 
se for dificil regular o dominio assim, ajudaria se alguem me ensinasse a eu limitar a quantidade de caractere maxima também…
por exemplo, do jeito que esta, um email do tipo, [email removido] ou [email removido] retorna válido…
alguem saberia como eu limitar o maximo para 3 caractere ja que nem o dominio nem o subdominio estrapolam 3 caracteres???
O * significa 0 ou mais vez e o + pelo menos 1 vez…
Esta expressão regular está com problemas.
Se você quiser pegar:
.org, .com.br, .com apenas, a expressão é apenas:
“(?i)[a-z0-9.-]+(\.org|\.com\.br|\.com)”
onde:
(?i) = ignore a diferença entre minúsculas e maiúsculas
[A-Z0-9.-]+ = qualquer coisa que tenha letras, dígitos, ponto e traço
(\.org|\.com|\.com\.br) = alguma das seguintes alternativas (|): .org, .com, .com.br
(Você não aceita caixa.gov.br? Que expressão regular restritiva demais. Eu em particular não gosto de bater a última parte para email; eu prefiro só contar o número de pontos. Se houver mais que um ponto, está OK.)
Esta expressão regular está com problemas.
Se você quiser pegar:.org, .com.br, .com apenas, a expressão é apenas:
“(?i)[a-z0-9.-]+(\.org|\.com\.br|\.com)”
onde:
(?i) = ignore a diferença entre minúsculas e maiúsculas
[A-Z0-9.-]+ = qualquer coisa que tenha letras, dígitos, ponto e traço
(\.org|\.com|\.com\.br) = alguma das seguintes alternativas (|): .org, .com, .com.br(Você não aceita caixa.gov.br? Que expressão regular restritiva demais. Eu em particular não gosto de bater a última parte para email; eu prefiro só contar o número de pontos. Se houver mais que um ponto, está OK.)
nao, eu irei fazer um conjunto grande… eu coloquei só os tres exemplos para nao ficar muito grande pq eu consigo validar corretamente pro .com, .com.br e .org para qualquer outro o raciocinio é o mesmo…

Raphael,
Voltando ao assunto de transformar arquivo de texto em String, a partir do java 1.5 vc pode usar a classe Scanner pra isso, não só arquivos como Strings tbem.
Seu código ficaria:
try
{
File arquivo = new File("arquivo.txt");
Scanner input = new Scanner(arquivo);
String linha;
while(input.hasNextLine())
{
String linha = scanner.nextLine();
System.out.println(linha);
}
}
catch (IOException e)
{
e.printStackTrace();
}
Espero ter ajudado de alguma forma.
[]'s
Olá pessoal,
Estou tentando rodar um código exemplo mas tá aparecendo o seguinte erro: "Multiple markers at this line …
- RandomAccessrafile cannot be resolved to a type
- RandomAccessrafile cannot be resolved to a type"
eu tentei verificar se tinha algum post aqui com erro parecido mas nao achei…alias achei mas não adiantou(sobre o compliance level)
vejam o código abaixo… desde já agradeço galera…!
import java.io.*;
public class meuFile {
public static void main(String args[]) {
File arq = new File(“C:\texto.txt”);
RandomAccessrafile raf = new RandomAccessrafile( arq, “rw”);
//gravando dados no arquivo
raf.writeUTraf("saldo=");
raf.writeDouble(100.0);
//lendo a partir da posição inicial
raf.seek(0);
String txt = raf.readUTraf();
double saldo = raf.readDouble();
raf.close();
}
}