Pessoal, gostaria de dicas para transformar um arquivo lido em String.
ja li o tutorial do guj sobre arquivos mas nao consigo ainda assim fazer…
meu codigo.[code]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();
}
}[/code]
ai, ele só ler uma linha, mas nao sei como fazer ele pra ler as restantes…
ou teria forma de ja transformar todo o texto em String?
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)
[quote=Ismaels]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)[/quote]
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:
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…
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, raphael@gmail.comomomo ou raphael@uol.com.brobrobobr retorna válido…
alguem saberia como eu limitar o maximo para 3 caractere ja que nem o dominio nem o subdominio estrapolam 3 caracteres???
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.)
[quote=thingol]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.)
[/quote]
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…
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();
}
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();
}