# Vergleich von Dateinamen



## JuiceRob (2. Feb 2012)

Hi, 

also ich soll ein Programm schreiben, dass ein Verzeichnis durchsucht dann die Dateien vergleicht ist von einem Dateinamen nur eine .tif Datei vorhanden, soll diese gelöscht werden ist aber zu dem Dateinamen die passende .txt Datei vorhanden mit dem gleichen Namen werden beide beibehalten. 
Bin jetzt soweit das ich die Dateien in einer for-Schleife vergleichen will, allerdings zeigt mir Eclipse ständig einen Fehler an, "ArrayName cannot be resolved" 


```
import java.io.File;
import java.io.FileWriter;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.io.IOException;

public class Test {
	


	public void txtFileList(String txtDir) {

		File txt = new File(txtDir);

		if (!txt.isDirectory()) {
			System.out.println("Kein Verzeichnis gefunden");
			return;
		}

		FilenameFilter txtFilter = new FilenameFilter() {

			public boolean accept(File txtDir, String txtName) {
				return txtName.endsWith(".TXT");
			}
		};

		String[] txtName = txt.list(txtFilter);
		System.out.println("txt Dateien die gefunden wurden:\n  ");
		for (String name : txtName) {
			System.out.println(name);
		}
		System.out.println("\n\nAnzahl gefundener .txt Dateien: \n"
				+ txtName.length);
		System.out.println("____________________________________  ");

	}

	public void tifFileList(String tifDir) {

		File tif = new File(tifDir);

		if (!tif.isDirectory()) {
			System.out.println("Kein Verzeichnis gefunden");
			return;
		}

		FilenameFilter tifFilter = new FilenameFilter() {

			public boolean accept(File tif, String tifName) {
				return tifName.endsWith(".tif");
			}
		};

		String[] tifName = tif.list(tifFilter);

		System.out.println("\n\ntif Dateien die gefunden wurden:\n  ");
		for (String name : tifName) {

			System.out.println(name);
		}
		System.out.println("\n\nAnzahl gefundener .tif Dateien: \n"
				+ tifName.length);
		System.out.println("____________________________________  ");

	}

	public static void main(String[] args) {
		
		
		
		Test txtFilter = new Test();
		txtFilter
				.txtFileList("C:/Testdateien");

		Test tifFilter = new Test();
		tifFilter
				.tifFileList("C:/Testdateien");
		

		try {

			// Erstellen einer loeschen.txt,
			// in dieser Datei werden alle gelöschten Dateinamen gespeichert
			File loeschenFile = new File(
					"C:/löschen.txt");
			FileWriter loeschenTXT = new FileWriter(loeschenFile);

			loeschenTXT.write("Die gelöschten .tif Dateien: ");

			loeschenTXT.flush();

			// Erstellen einer protokoll.txt,
			// in dieser Datei werden alle überprüften Dateinamen gespeichert
			File logFile = new File(
					"C:/log.txt");
			FileWriter logTXT = new FileWriter(logFile);

			logTXT.write("Die überprüften Dateien: ");
			logTXT.flush();
			
				
				
			// Hier komm ich dann nicht weiter 
			
			for (int a = 0; a = tifName.length; a++) {
				for (int b = 0; b = txtName.length; b++){
					if (tifName[a] == txtName[b]){	
						logTXT.write("\n" + tifName[a] + txtName[b] + "wurden überprüft und passen zusammen" );
						break;	
					} else {			
						loeschenTXT.write(tifName[a]);
				}
			}
		}
				
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
```

Vielleicht könnt ihr mir sagen wo der Fehler ist ich komm nicht drauf, vielleicht würde ich ihn auch sehen aber irgendwie komm ich im moment nicht weiter. 

Danke schonmal im vorraus für die Hilfe.

Sorry für den Threadname ich weiß nicht wie ich ihn sonst nennen soll.


----------



## xehpuk (2. Feb 2012)

In welcher Zeile steht denn die Meldung "ArrayName cannot be resolved"?


----------



## JuiceRob (2. Feb 2012)

In der for-Schleife bei jedem "txtName" und "tifName" zeigt mit Eclipse den Fehler an.


----------



## insane80 (2. Feb 2012)

Deine Arrays 
	
	
	
	





```
tifName
```
 und 
	
	
	
	





```
txtName
```
hast Du lokal in anderen Methoden deklariert und initialisiert, dann kannst Du in der main-Methode nicht mehr so drauf zugreifen.


----------



## xehpuk (2. Feb 2012)

Ändere mal die Rückgabewerte von 
	
	
	
	





```
txtFileList()
```
 und 
	
	
	
	





```
tifFileList()
```
 zu 
	
	
	
	





```
String[]
```
.
Die Rückgabewerte in der 
	
	
	
	





```
main()
```
 dann als 
	
	
	
	





```
txtName
```
 und 
	
	
	
	





```
tifName
```
 speichern.
Zu deinen Schleifen: 
	
	
	
	





```
=
```
 sollte da wohl 
	
	
	
	





```
<
```
 heißen. Und die Gleichheit von Strings überprüft man mit 
	
	
	
	





```
equals()
```
, nicht mit 
	
	
	
	





```
==
```
. Des Weiteren solltest du in den Methoden die Dateiendungen entfernen, da du sonst bei bspw. 
	
	
	
	





```
"test.txt".equals("test.tif")
```
 natürlich 
	
	
	
	





```
false
```
 zurückbekommst.
Vorsicht auch bei den Filtern. Diese sollten den Dateinamen case-insensitive überprüfen.


----------



## JuiceRob (3. Feb 2012)

Oh man, kann ja nicht funktionieren wenn die nicht global deklariert sind , Danke. 
Jetzt sollte es funktionieren.
xehpuk danke für die tips.  
Ist somit erledigt


----------

