Para que serve esses comandos:
IOException
throws
No meu livro ele está nesse exemplo:
public void inicializa() throws IOException
{
arquivoFisico = new File(nomeArquivo);
}[/b]
Para que serve esses comandos:
IOException
throws
No meu livro ele está nesse exemplo:
public void inicializa() throws IOException
{
arquivoFisico = new File(nomeArquivo);
}[/b]
ola alexandre,
throws IOException
significa que seu método pode lançar a exceçao “IOException”
que terá que ser tratada mais a frente.
beleza?
falow;
Quando um conjunto de instruções pode gerar um exception, você pode:
tratar o exception dentro de um bloco try/catch
Ex:
<blockquote>Try {
System.out.println(“Portal Java . Com”);
} catch (Exception e ) {
System.out.println(“Ocorreu uma exception”);
}</blockquote>
ou lançar esta exception para ser tratada pelo método que chamou o método que gerou a exception.
Ex:
Entre neste link abaixo e leia mais sobre o assunto.
http://www.portaljava.com.br/home/modules.php?name=Sections&op=viewarticle&artid=22
Legal cara dei uma olhada no link esclareci minhas dúvidas, mas aconteceu o seguinte eu estava fazendo um exercício que é o seguinte eu tenho que desenvolver um programa que copie o conteúdo de um arquivo txt para outro arquivo, peguei os exemplos de livro e desenvi dessa forma:
import java.io.*;
public class Copy
{
public static void main(String[] args)
{
try
{
FileReader input = new FileReader(args[0]);
FileWriter output = new FileWriter(args[1]);
char[] buffer = new char[128];
int charsRead = 0;
charsRead = input.read(buffer);
while (charsRead != -1)
{
output.write(buffer, 0, charsRead);
charsRead = input.read(buffer);
}
input.close();
output.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Eu executo ele dessa forma:
c:\java>java Copy texto1.txt texto2.txt
Esse modelo eu fiz tirando exemplo do livro mas não entendi as seguintes linhas:
1)char[] buffer = new char[128];
2)charsRead = input.read(buffer);
3)output.write(buffer, 0, charsRead);
O pouco que eu consegui entender nessas linhas é o seguinte:
Na primeira linha não entendi nada.
Na segunda linha acredito que a variável charsRead lê na variável buffer a quantidade de caracter que contém o arquivo.
Na terceira linha não entendi nada!
<blockquote>1)char[] buffer = new char[128];
2)charsRead = input.read(buffer);
3)output.write(buffer, 0, charsRead); </blockquote>
acho que é isso!
Certo cara valeu pela ajuda, clareou legal, para finalizar confere comigo se eu entendi certo, a linha char[] buffer = new char[128];, possibilita que nesse array fique armazenado 128 caracteres, como eu falei no início esse porgrama copia o conteúdo de arquivo texto para outro dessa forma:
c:\java>java Copy texto.txt texto2.txt
Essa linha captura o arquivo texto.txt e lê
FileReader input = new FileReader(args[0]);
Essa outra linha captura o nome do arquivo que receberá os dados no caso texto2.txt:
FileWriter output = new FileWriter(args[1]);
então se eu entendi bem o conteúdo do arquivo é jogado dentro do array
char[] buffer = new char[128];, ou seja fica tudo dentro da variável buffer, mas como o conteúdo vai para a variável buffer? Ou seja após eu usar FileReader e FileWriter e em seguida criar um array, o sistema já armazena dentro desse array por padrão ou eu posso mandar armazenar em outro lugar?Ou estou entendo tudo errado?
Vamos… você está quase no caminho! hehehe
então se eu entendi bem o conteúdo do arquivo é jogado dentro do array
char[] buffer = new char[128];, ou seja fica tudo dentro da variável buffer, mas como o conteúdo vai para a variável buffer? Ou seja após eu usar FileReader e FileWriter e em seguida criar um array, o sistema já armazena dentro desse array por padrão ou eu posso mandar armazenar em outro lugar?Ou estou entendo tudo errado?
a única coisa que
char[] buffer = new char[128];faz é criar um array de chars.
charsRead =input.read(buffer);
Eu nunca usei isso mas, pelo que eu entendi, esta linha, que é repetida dentro do while, insere dentro de buffer a quantidade de caracteres que o array suporta (128), e retorna esta quantidade para charsRead.
A necessidade de se retornar a quantidade de caracteres é devido ao fato de que podem restar menos de 128 caracteres para serem lidos, e o retorno será -1 quando não houver mais dados a serem lidos.
Acho que é isso!
Cara valeu entendi, sobre isso não tenho mais dúvidas, agora para finalizar esse tópico eu estou tendo fazer uma diferença no meu exercício vou colocare aqui o que eu criei se, porém está dando errado. O exercício é o seguinte esse programa anterior copia o conteúdo de um arquivo texto para outro arquivo texto, e estou tentando fazer o seguinte quero copiar o contéudo para outro arquivo texto porém invertido ou seja, se no arquivo texto.txt tem a palavra java, eu quero que no arquivo texto2.txt fique avaj, olha como eu fiz:
import java.io.*;
public class Copy
{
public static void main(String[] args)
{
try
{
FileReader input = new FileReader(args[0]);
String texto = input; //adiocionei essa linha
StringBuffer inverte = new StringBuffer(texto);//adiocionei essa linha
FileWriter output = new FileWriter(args[1]);
char[] buffer = new char[128];
StringBuffer buffer = inverte.reverse();//adiocionei essa linha
int charsRead = 0;
charsRead = input.read(buffer);
while (charsRead != -1)
{
output.write(buffer, 0, charsRead);
charsRead = input.read(buffer);
}
input.close();
output.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Eu ainda não tiver tempo de testar fiz na hora do almoço, você acha que funciona ou tem alguma coisa errada. Coloquei desse jeito porque pelo que entendi a variável buffer é a responsável pela troca da informação de um arquivo para outro, me corrija se eu estiver errado
perdoe a demora…mas a net caiu aqui no trampo.
Você não pode declarar dois objetos(buffer) com o mesmo nome no mesmo método.
Você pode ler para buffer, transformar em StringBuffer, inverter e depois passar pro buffer e gravar no output, mas você estará invertendo de 128 em 128 caracteres.
Deve ser possível escrever no início do arquivo, talvez tenha algo haver com aquele 0 no método write.
também deve ser possível saber a quantidade de chars q tem um arquivo!
[]`s
StringBuffer sb = new StringBuffer(“Socorram-me subi no onibus em Marrocos”);
sb.reverse();
String invertida = sb.toString(); //“socorraM me subino on ibus em-marrocoS”
Cara primeiramente quero agradecer a sua ajuda, minhas dúvidas foram esclarecidas aprendi legal, foi muito bom trocar essa idéia com vc!
O último exemplo funcionou muito bem. Obrigado e até a próxima.
Obrigado o caramba!
é dé reaus!
ehehhehe
blz cara…precisando…estamos aê