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!