10. januar 2005 - 19:33
Der er
14 kommentarer og 1 løsning
kopier filer i java
Hej Mit problem går ud på at jeg gerne vil kopiere nogle filer med java. Lade os sige at jeg har "c:\1.txt" som jeg gerne vil kopiere til denne sti "d:\kopi.txt" Filen skrifter altså sti og filnavn. Er der desuden nogle parametre man kan sætte på så den automatisk overskriver. Sammenligner ændret tiderne osv. Håber en ekspert kan hjælpe mig :-)
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
10. januar 2005 - 19:36
#1
simpel copy: import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class CopyFile { public static void copy(String fromname, String toname) throws IOException { InputStream is = new FileInputStream(fromname); OutputStream os = new FileOutputStream(toname); byte[] b = new byte[100000]; int n; while((n = is.read(b)) >= 0) { os.write(b, 0, n); } } public static void main(String[] args) throws Exception { copy("C:\\test.exe", "C:\\temp\\test.exe"); } }
10. januar 2005 - 19:36
#2
xcopy (altså rekursivt copy af dir): import java.io.*; public class CopyDir { public static void main(String[] argv) throws Exception { process("C:\\ZZZ", "C:\\ZZZCOPY"); } private static void process(String d1, String d2) throws IOException { File f = new File(d1); if (f.isDirectory()) { (new File(d2)).mkdir(); String list[] = f.list(); for (int i = 0; i < list.length; i++) { process( d1 + File.separator + list[i], d2 + File.separator + list[i]); } } else if (f.isFile()) { copy(d1, d2); } } public static void copy(String fromname, String toname) throws IOException { InputStream is = new FileInputStream(fromname); OutputStream os = new FileOutputStream(toname); byte[] b = new byte[100000]; int n; while ((n = is.read(b)) >= 0) { os.write(b, 0, n); } is.close(); os.close(); } }
10. januar 2005 - 19:37
#3
hehe arne arne arne jeg fik ikke engang en mail fra katogorien så havde du svaret;o)
10. januar 2005 - 19:37
#4
copy med progress bar: import java.awt.*; import java.io.*; import javax.swing.*; public class CopyProgressThread extends JFrame { public JProgressBar pbar; public CopyProgress() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().setLayout(new BorderLayout()); pbar = new JProgressBar(); getContentPane().add(pbar, BorderLayout.CENTER); pack(); } public static void main(String[] args) { CopyProgress cp = new CopyProgress(); cp.show(); CopyThread cpthread = new CopyThread("C:\\z.1", "C:\\z.2", cp.pbar); cpthread.start(); } } class CopyThread extends Thread { private String from; private String to; private JProgressBar pbar; public CopyThread(String from, String to, JProgressBar pbar) { this.from = from; this.to = to; this.pbar = pbar; } public void run() { 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(); } } }
10. januar 2005 - 19:38
#5
Alle disse eksempler overskriver.
10. januar 2005 - 19:39
#6
Du kan hente lats modfied for en fil med: (new File(filename)).lastModified()
10. januar 2005 - 19:40
#7
kalp> eksemplerne var nogle jeg havde på lager
10. januar 2005 - 19:41
#8
arne_v>> ja men du skulle vel stadig ind og finde dem:) men det okay hehe:)
10. januar 2005 - 19:52
#9
det ser godt ud...og det gik meget hurtigt, tak for det. Jeg kigger på med det samme
10. januar 2005 - 19:58
#10
Kort spørgsmål til det sidste eksempel med progress baren. Jeg får fejl ved CopyProgress() , i 6.linie. Skal man gøre noget ekstra. Indtil videre har jeg bare kopieret det for at se hvordan det virker
10. januar 2005 - 20:02
#11
Klassen skal hedde: public class CopyProgress extends JFrame {
10. januar 2005 - 20:03
#12
(Jeg har rettet navnet men ikke fået det gjordt konsekvent)
10. januar 2005 - 20:04
#13
Og med en nyere java bør cp.show(); også erstattes med cp.setVisible(true);
15. oktober 2007 - 09:44
#14
Arne_v smid et svar.
15. oktober 2007 - 15:08
#15
OK
Kurser inden for grundlæggende programmering