Help! Ler bytes de um InputStream e gravar em arquivo

5 respostas
L

Alguem tem alguma idéia de como fazer isso? Eu estou procurando alguns métodos mas não acho. Por exemplo, eu não sei o que vem da rede, eu estou querendo ler bytes e gravar bytes em arquivo.

InputStream is = connection.getInputStream();
is.available();

Com o available eu vejo a quantidade de bytes para ler…criei um FileWriter encapsulado em um BufferedWriter, mas o buffered writer não tem método para escrever bytes =/

Help!

5 Respostas

J
byte[] bytes = ...

FileOutputStream out = new FileOutputStream("C:/teste.txt");

out.write(bytes);

out.close();

ou

InputStream in = connection.getInputStream();

FileOutputStream out = new FileOuputStream("C:/teste.txt");

int b;

while((b = in.read())>-1){
   out.write(b);
}
in.close();
out.close();
L

O seu primeiro código eu não entendi…da onde ele pega o bytes?? Na primeira linha não ta fazendo nada…

PS: E como eu envio uma String por um outputStream?:

byte ba[] = String.valueOf(netSocket.getLocalPort()).getBytes();
os.write(ba);
os.flush();

Desse jeito quando dou write do outro lado ta tudo em branco o arquivo =/

J
O seu primeiro código eu não entendi...da onde ele pega o bytes?? Na primeira linha não ta fazendo nada...

Eu estou supondo que você já leu eles de algum lugar, e tem um array de bytes pra escrever no arquivo.... mas vai o codigo completo então...

InputStream in = new FileInputStream("C:/original.gif");
OutputStream out = new FileOutputStream("C:/copia.gif");
		
byte[] buffer = new byte[1024];
		
while(in.read(buffer)>0){
   out.write(buffer);
}
		
out.close();
in.close();
L

Não ta funcionando, droga :evil:

Olha só ( Servidor )

public static void main(String[] args) {
		try {
			ServerSocket ss = new ServerSocket(5555);
			Socket connection = null;
			
			File f = new File("C:"+File.separator+"testeUpload.txt");
			f.createNewFile();
			FileOutputStream fos = new FileOutputStream(f,true);
			byte inbuffer[] = new byte[1024];
			
			while(true){
				connection = ss.accept();
				InputStream is = connection.getInputStream();
				is.read(inbuffer,0,is.available());
				System.out.println(inbuffer);
				OutputStream p = connection.getOutputStream();
				fos.write(inbuffer);
				fos.close();
				connection.close();
			}
		}

(Cliente)

public void conectar(){
		if(netSocket == null){
			try {
				//File f = new File("C:"+File.separator+"arqcomp.txt");
				//FileReader fr = new FileReader(f);
				ia = InetAddress.getLocalHost();
				netSocket = new Socket(host,port/*,ia,2000*/);
				netSocket.setSoTimeout(1);
				br = new BufferedReader(new InputStreamReader(netSocket.getInputStream()));
				os = netSocket.getOutputStream();
				byte ba[] = String.valueOf(netSocket.getLocalPort()).getBytes();
				os.write(ba);
				os.flush();
				//pw.println("Teste de Envio de mensagem de "+netSocket.getLocalAddress()+":"+netSocket.getLocalPort());
				//pw.flush();				
				closeAll();
			}

Ta escrevendo o arquivo sem NADA =(

L

Opa, funcionou…mas ele ta botando um espaço gigantesco quando mando escrever 2x seguidas =/

Criado 2 de junho de 2006
Ultima resposta 2 de jun. de 2006
Respostas 5
Participantes 2