Manipular um arquivo

11 respostas
colosos_colossus

Eu quero copiar um arquivo(imagem) e mandar para outra pasta…
como faço isso em java?

11 Respostas

viniciusfaleiro

BufferedReader e BufferedWriter

FabricioPJ

Tente algo assim:

public void copiar(File origem, File destino){

   InputStream in = new FileInputStream(origem);
   OutputStream out = new FileOutputStream(destino);

   byte[] buf = new byte[1024]; 
   while((len = in.read(buf)) > 0){
      out.write(buf, 0, len);
   }
in.close();
out.close();
}
colosos_colossus

O que é esse len?

FabricioPJ

Opa, na pressa esqueci de declara-lo:

public  void copiar(File origem, File destino){  
   
    InputStream in = new FileInputStream(origem);  
    OutputStream out = new FileOutputStream(destino);  
   
    byte[] buf = new byte[1024];  
    int len; 
    while((len = in.read(buf)) > 0){  
       out.write(buf, 0, len);  
    }  
 in.close();  
 out.close();  
 }
colosos_colossus

como eu armazeno os caminhos ?
nesses duas variavel origem e destino ?

uia…
es bicho é de belem tbm ^^

FabricioPJ

Você pode armazenar da seguinte forma:

File origem = new File("caminho");
colosos_colossus

é to ligado …
imaginando se lá mesmo nesse método …
vo bota nele mesmo .

Josemar_Jobs
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Copiar {
	public static void main(String[] args) throws Exception {
		File origem = new File("C:/ORIGEM/DE.jpg");
		FileInputStream in = new FileInputStream(origem);

		File destino = new File("C:/DESTINO/" + origem.getName());
		FileOutputStream out = new FileOutputStream(destino);
		int c;
		while ((c = in.read()) != -1) {
			out.write(c);
		}
	}
}
tkx
Josemar Jobs:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Copiar {
	public static void main(String[] args) throws Exception {
		File origem = new File("C:/ORIGEM/DE.jpg");
		FileInputStream in = new FileInputStream(origem);

		File destino = new File("C:/DESTINO/" + origem.getName());
		FileOutputStream out = new FileOutputStream(destino);
		int c;
		while ((c = in.read()) != -1) {
			out.write(c);
		}
	}
}

:idea:
Para automatizar mais o código do colega Josemar, use os args do main! Assim:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Copiar {
	public static void main(String[] args) throws Exception {
		File origem = new File(args[0]);
		FileInputStream in = new FileInputStream(origem);

		File destino = new File(args[1] + origem.getName());
		FileOutputStream out = new FileOutputStream(destino);
		int c;
		while ((c = in.read()) != -1) {
			out.write(c);
		}
	}
}

Dae a chamada fica:
Copiar

exemplo:
Copiar "C:\img.jpg" "D:\"

pedroroxd

Realmente, fica bem mais automatizado passando os argumentos para a classe…
Bem legal, não tinha pensado nisso =)

T

Não esqueça de dar um close() em todos os stream’s .

http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileOutputStream.html#close()

Criado 18 de março de 2010
Ultima resposta 18 de mar. de 2010
Respostas 11
Participantes 7