Para que server esse comando

11 respostas
A

Para que serve esses comandos:

IOException
throws

No meu livro ele está nesse exemplo:

public void inicializa() throws IOException { arquivoFisico = new File(nomeArquivo); }[/b]

11 Respostas

P

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;

B

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

A

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!

B
<blockquote>1)char[] buffer = new char[128];

2)charsRead = input.read(buffer);

3)output.write(buffer, 0, charsRead); </blockquote>
  1. ele criou um array de char chamado “buffer”, com tamanho 128, para que pudesse ler de 128 em 128.
  2. charRead é o número que caracters que podem ser lidos ainda no arquivo.
  3. você está escrevendo(write) no output(seu arquivo de saida), um array de chars(buffer), o 0 não sei o que é, e charsRead é a quantidade de caracteres.

acho que é isso!

A

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?

B

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!

A

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

B

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

B
StringBuffer sb = new StringBuffer(Socorram-me subi no onibus em Marrocos);

sb.reverse();

String invertida = sb.toString(); //“socorraM me subino on ibus em-marrocoS”
A

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.

B

Obrigado o caramba!
é dé reaus!
ehehhehe
blz cara…precisando…estamos aê

Criado 5 de abril de 2005
Ultima resposta 7 de abr. de 2005
Respostas 11
Participantes 3