O pacote java.io

Bom pessoal nao entendi uma coisas aqui na apostila da caelum e colei o trecho

" A classe InputStream é abstrata e FileInputStream uma de suas filhas concretas. FileInputStream vai
procurar o arquivo no diretório em que a JVM fora invocada (no caso do Eclipse, vai ser a partir de dentro do
diretório do projeto). Alternativamente você pode usar um caminho absoluto.

InputStream tem diversas outras filhas, como ObjectInputStream, AudioInputStream,
ByteArrayInputStream, entre outras.
Para recuperar um caractere, precisamos traduzir os bytes com o encoding dado para o respectivo código
unicode, isso pode usar um ou mais bytes. Escrever esse decodificador é muito complicado, quem faz isso por
você é a classe InputStreamReader. "

class TestaEntrada {
   public static void main(String[] args) throws IOException {
   InputStream is = new FileInputStream("arquivo.txt");
   InputStreamReader isr = new InputStreamReader(is);
   int c = isr.read();
  }

}

Como assim “recuperar um caractere” ?

Ateriormente a apostila diz:
" As classes abstratas InputStream e OutputStream definem, respectivamente, o comportamento padrão dos
fluxos em Java: em um fluxo de entrada, é possível ler bytes e, no fluxo de saída, escrever bytes."

Como assim ler e escrever bytes ?
valeu galera

Recuperar um caractere: a partir de uma fonte de dados qualquer (pode ser um arquivo, a memória RAM, uma conexão de rede, e por aí vai), extrair bytes e decodificar um caractere a partir deles. Por exemplo, num arquivo de texto em codificação ASCII, um byte com o valor 65 corresponde à letra ‘A’.

Ler bytes: extrair bytes de uma fonte de dados.

Escrever bytes: gravar bytes sobre um local de destino.

[quote=roger_rf]Recuperar um caractere: a partir de uma fonte de dados qualquer (pode ser um arquivo, a memória RAM, uma conexão de rede, e por aí vai), extrair bytes e decodificar um caractere a partir deles. Por exemplo, num arquivo de texto em codificação ASCII, um byte com o valor 65 corresponde à letra ‘A’.

Ler bytes: extrair bytes de uma fonte de dados.

Escrever bytes: gravar bytes sobre um local de destino.[/quote]

o codigo que exemplifiquei ali em cima por exemplo me parece que se destina a abrir um arquivo txt - é isso q isso significa recuperar um caractere ?

O código que você postou abre um arquivo de texto e recupera (ou seja, lê) o primeiro caractere contido nele. A seção do código que recupera o caractere é “isr.read()”. Assim, se seu arquivo contiver 50 caracteres, você poderá chamar este método até 50 vezes. Para checar se a fonte de dados já foi lida integralmente, verifique se o caractere retornado pelo método read() tem o valor -1. Para finalizar, não se esqueça de fechar o arquivo de texto quando terminar de lê-lo, através da chamada “isr.close()”.

to bem verde nisso ainda, mais do que pensei no java.io
tu poderia me citar uma aplicação pratica disso Roger ?
a utilidade em abrir e ler um arquivo (recuperar)
desculpa a pergunta nub

Ler arquivos de texto é uma técnica essencial, usada em muitos cenários. Ler arquivos de configuração, arquivos de dados gerados por outros sistemas, logs de operação, e por aí vai.

salve salve Javeiros de Plantao, aqui um pretendete ao titulo!
Bom galera, simplifying:
Diz no javaDoc do FileStringReader que alem de receber um paramentro que sera o arquivo a ser criado ele tb pode receber um parametro boleano “append” que se for “true” escreve os bytes no final do arquivo alvo e se “false” esceve no incio do arquivo.
Consegui criar o arq “saida.txt” com o FileStringReader ok mas nao consegui implementar o boleano
help here guys""" :smiley:

import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

public class TestaOutputStream {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		OutputStream os = new FileOutputStream("saida.txt" , boolean append); // o eclipse ta sublinhando a append declarada
		OutputStreamWriter osw = new OutputStreamWriter(os);
		BufferedWriter bw = new BufferedWriter(osw);
		
		bw.write("Alterado");
		bw.close();
	}

}

Para gravar no fim do arquivo:

OutputStream os = new FileOutputStream("saida.txt" , true);

Para gravar no início do arquivo:

OutputStream os = new FileOutputStream("saida.txt" , false);

[quote=roger_rf]Para gravar no fim do arquivo:

OutputStream os = new FileOutputStream("saida.txt" , true);

Para gravar no início do arquivo:

OutputStream os = new FileOutputStream("saida.txt" , false);

obrigado de novo roger!

ai pessoal meu BufferedReader ta sendo sublinhado pelo eclipse e ele diz que esta indefinido e sugere criar o metodo. nao entendi pq esta errado se tenho outros codigos semelhantes e no problems at all (sem problemas neles).
ta ai

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

public class TestaIO {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		InputStream is = System.in;
		InputStreamReader isr = new InputStreamReader(is);
		BufferedReader br = BufferedReader(isr);  // aqui ele sublinha
		
		String linha = br.readLine();
		
		while (linha != null){
			System.out.println(linha); 
			linha = br.readLine();
		}
		br.close();
	}

}

Faltou o operador “new”:

BufferedReader br = new BufferedReader(isr);

[quote=roger_rf]Faltou o operador “new”:

BufferedReader br = new BufferedReader(isr);

putzzz… vai ser tanso assim la na china!
é incrivel… li o codigo mil vezes e passei por cima do erro sem vê-lo!!! :shock:
valeu roger!