Avatar billede jonas-i Nybegynder
27. september 2003 - 19:43 Der er 6 kommentarer og
1 løsning

Kopier folder

Hej
Jeg vil gerne vide hvordan man kopier en folder i java.
Svar gerne med et fungerende kode eksempel eller links til gode kode eksempler eller tutorials.
Avatar billede arne_v Ekspert
27. september 2003 - 19:49 #1
Det er der ikke noget direkte support for i Java API.

Man vil være nødt til at lave en metode der fandt alle filer
i et directory og for hver enkelt kopierede dem til et andet directory.

(evt. skulle det laves rekursivt for at hådntere subdirectories)
Avatar billede arne_v Ekspert
27. september 2003 - 19:52 #2
2 relevante kode stumper:

1)  (rekursivt) lookup af filer i directory:

import java.io.*;

public class DirTree {

  public static void main(String[] argv) {
      for (int i = 0; i < argv.length; i++) {
        process("", argv[i]);
      }
  }

  private static void process(String indent, String name) {
      File f = new File(name);
      if (f.isDirectory()) {
        System.out.println(indent + "[" + f.getName() + "]");
        String list[] = f.list();
        for (int i = 0; i < list.length; i++) {
            process(indent + "  ", name + f.separator + list[i]);
        }
      } else if (f.isFile()) {
        System.out.println(indent + f.getName());
      }
  }
}

2)  kopiering af fil

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");
    }
}
Avatar billede arne_v Ekspert
27. september 2003 - 19:53 #3
Hvis du merger de 2 programmer således a lookup i.s.f. at udskrive navnet
kalder copy, så skulle den vel være hjemme.
Avatar billede jonas-i Nybegynder
27. september 2003 - 19:58 #4
Hehe ja det var faktisk noget af det samme jeg selv var kommet frem til at jeg blev nødtil... Men kan bare næste ikke fatte at der ikke er en "copyFolder" Når der f.eks. er det i VBscript... osv...
Avatar billede arne_v Ekspert
27. september 2003 - 20:00 #5
Giv mig lige 10 minutter så laver jeg den !
Avatar billede arne_v Ekspert
27. september 2003 - 20:05 #6
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();
    }
}
Avatar billede jonas-i Nybegynder
27. september 2003 - 20:09 #7
Det er fantatisk :D weee super takker :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester