Elemente in "for" bzw. "while" Schleife überspringen

Status
Nicht offen für weitere Antworten.
Hallo,

bin Anfänger was Java Programmierung angeht.

Habe da ein kleines Programm gebastelt und hänge nun an einen Punkt fest.

Problem:
Das Programm soll Dateien kopieren und bestimmte Dateien/Verzeichnisse sollen ausgelassen/übersprungen werden.

Nach mehreren vergeblichen versuchen und googel im Internet habe ich gedacht ich wende mich an euch.

Habe schon alle möglichen Variationen und Formen probiert aber dennoch werden immer alle Dateien kopiert.
Code:
i = 0;
	while (i < files.length){
        copyDirectory(new File(quelle, files[i]), new File(ziel, files[i]));
					 i+=1;
	  }
Könnt ihr mir helfen?
 
Code:
i = 0;
while (i < files.length)
{
    if (shouldCopy(files[i])
    {
        copyDirectory(new File(quelle, files[i]), new File(ziel, files[i]));
    }
    i+=1;
}
!!?
 
der code ist leider nicht hilfreich....

wo filterst du ? ist dass die ganze methode - was ist copyDirectory...

n bisschen mehr info / code waere toll - und pack deinen code in [ java] code [/code]

dann ists besser zu lesen
 
Wollte eigentlich nur den wichtigsten Teil beschreiben aber hier ist alles:

[Java]
import java.io.*;
import java.lang.String;
import java.lang.*;
import java.util.*;
public class CopyDirectory{

public static void main(String[] args) throws IOException{

CopyDirectory cd = new CopyDirectory();
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String source = "C:\\quelle";
File src = new File(source);
String destination = "c:\\ziel";
File dst = new File(destination);
cd.copyDirectory(src, dst);

}
public void copyDirectory(File quelle, File ziel)
throws IOException{

//Varis setzen
int i;
if (quelle.isDirectory()){
if (!ziel.exists()){
ziel.mkdir();
}
String files[] = quelle.list();

i = 0;
while (i < files.length){
copyDirectory(new File(quelle, files), new File(ziel, files));
i+=1;
}
}
else{
if(!quelle.exists()){
System.out.println("Datei oder Verzeichnis existiert nicht");
System.exit(0);
}
else
{
InputStream in = new FileInputStream(quelle);
OutputStream out = new FileOutputStream(ziel);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
}
System.out.println("Verzeichnis werden kopiert..... ");
}
}
[/Java]
 
Selbstverständlich ist kein Filter gesetzt, weil mir dazu die richtige Syntax fehlt.

Was ich möchte ist, das beispielsweise eine Datei namens "test.txt" nicht mit in das Zieldirectory kopiert wird.

Dazu folgendende erfolglose Versuche:
Java:
while (i < files.length && !quelle.equals("test.txt")){
        copyDirectory(new File(quelle, files[i]), new File(ziel, files[i]));
                     i+=1;
      }
und noch mehr.... Ich denke aber das ich vollig auf dem Holzweg bin!?
 
du kannst File (Java Platform SE 6)) nutzen, bei dem du einen Filter angeben kannst welche Dateien er beruecksichtigen soll.

zb
Java:
String[] files = new File("/tmp").list(new FilenameFilter() {
   public boolean accept(File dir, String name) {
      return name.endsWith("txt"); // nur txt dateien mitnehmen
   }
});
 
Was ich möchte ist, das beispielsweise eine Datei namens "test.txt" nicht mit in das Zieldirectory kopiert wird.
Mach INNERHALB der Schleife eine if-Abfrage.
Mit der Methode
File#getName()
bekommst du den Dateinamen des jeweiligen File-Objectes.
 
Dazu folgendende erfolglose Versuche:
Java:
while (i < files.length && !quelle.equals("test.txt")){
und noch mehr.... Ich denke aber das ich vollig auf dem Holzweg bin!?

Überleg doch was das macht? Hier brichst du den gesamten Vorgang ab sobald eine Datei "test.txt" lautet.
Richtig gehts mit FilenameFilter oder einfach das if innerhalb der while-Schleife. Beides wurde ja bereits genannt.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben