Transferencia de arquivos

alguem tem um exemplinho de como transferir um arquivo de um diretório para outro?

public class NIOTest {

	public void test() throws Exception {
		// Cria a stream para ler o arquivo original
		FileInputStream fin = new FileInputStream(
				"/eclipse/workspace/teste/src/nio/first.zip");

		// Cria a stream para gravar o arquivo de cópia
		FileOutputStream fout = new FileOutputStream(
				"/eclipse/workspace/teste/src/nio/copy.zip");

		// Usa as streams para criar os canais correspondentes
		FileChannel in = fin.getChannel();
		FileChannel out = fout.getChannel();

		// Número de bytes do arquivo original
		long numbytes = in.size();

		// Transfere todo o volume para o arquivo de cópia.
		in.transferTo(0, numbytes, out);
	}

	public static void main(String[] args) throws Exception {
		new NIOTest().test();
	}
}

valeu^^

ai eu poderia pegar o tamanho total de bytes e fazer o JProgressBar
enquanto a tranferencia é feita…certo?

E como tu vai saber em que ‘byte’ o processo de copia está para atualizar o progressBar?

Não olhei em detalhes a api nio… mas não sei se tem como…

Se for uma ProgressBar que vai do lado pro outro… ai sim… tranquilo.

esse negócio de JProgressBar é complicado… até agora não vi um exemplo bom… fiz uma jprogress mas ela não se mexe… parece que tem q fazer uma classe com extends pra runtime… pra controla o progresso… não entendi direito

Um exemplinho bem simples usando um progressBar para copiar arquivo!

public class ProgressBarTest extends JPanel implements ActionListener {

	JProgressBar progress;
	Timer timer;
	boolean sum = true;
	JButton button;

	public ProgressBarTest() {
		this.progress = new JProgressBar();
		this.progress.setPreferredSize(new Dimension(200, 22));
		this.progress.setStringPainted(true);
		this.progress.setString("");
		this.add(this.progress);

		JButton button = new JButton("Copy!");
		button.setPreferredSize(new Dimension(75, 22));
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				go();
			}
		});
		this.add(button);
	}

	public void go() {
		if (this.timer == null) {
			this.timer = new Timer(50, this);
		}

		if (!this.timer.isRunning()) {
			new Thread(new Runnable() {
				public void run() {
					progress.setString("Copying");
					timer.start();
					try {
						copy();
					} catch (Exception e) {
						e.printStackTrace();
					}
					timer.stop();
					progress.setValue(0);
					progress.setString("OK");
				}
			}).start();
		}
	}

	public void copy() throws Exception {
		FileInputStream fin = new FileInputStream(
				"/tmp/eclipse/eclipse-SDK-3.3.1-win32.zip");

		FileOutputStream fout = new FileOutputStream("/tmp/eclipse/tmp.zip");

		FileChannel in = fin.getChannel();
		FileChannel out = fout.getChannel();

		long numbytes = in.size();

		in.transferTo(0, numbytes, out);
		in.close();
	}

	public void actionPerformed(ActionEvent e) {
		int value = this.progress.getValue();
		if (value == 100) {
			this.sum = false;
		} else if (value == 0) {
			this.sum = true;
		}

		if (this.sum) {
			value += 2;
		} else {
			value -= 2;
		}
		this.progress.setValue(value);
	}

	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setContentPane(new ProgressBarTest());
		frame.setSize(300, 70);
		frame.setVisible(true);
	}
}

hehe este está realmente simples
vlw!