JProgressBar og filkopiering .
Jeg har i et tidligere spm spurgt om hvordan man kan lave en progressBar som indikerer hvor langt i forløbet en filkopiering er nået. Dette fik jeg da også svar på, og det hele fungerede( i Intellij 3), men da jeg skulle tilføje koden til mit project i JBuilder opstod der dog problemer: Efter at have startet filkopieringen ved et tryk på en knap startede kopieringen, men JPorgressbar'en blev ikke opdateret før filen er færdigkopieret. Hvad gør jeg forkert?Link til tidligere spm: http://www.eksperten.dk/spm/409572
Her følger koden jeg har brugt:
import java.awt.*;
import java.io.*;
import javax.swing.*;
public class CopyProgress extends JFrame {
private JProgressBar pbar;
public CopyProgress() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout());
pbar = new JProgressBar();
getContentPane().add(pbar, BorderLayout.CENTER);
pack();
}
public void copy(String from, String to) {
pbar.setMaximum((int)(new File(from)).length());
pbar.setValue(0);
pbar.setStringPainted(true);
try {
InputStream is = new FileInputStream(from);
OutputStream os = new FileOutputStream(to);
int total = 0;
byte[] b = new byte[1000];
int n;
while((n = is.read(b)) >= 0) {
os.write(b, 0, n);
total += n;
pbar.setValue(total);
}
is.close();
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
CopyProgress cp = new CopyProgress();
cp.show();
cp.copy("C:\\z.1", "C:\\z.2");
}
}
