Vergleich von Dateinamen

JuiceRob

Mitglied
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"

Java:
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.
 

insane80

Aktives Mitglied
Deine Arrays
Code:
tifName
und
Code:
txtName
hast Du lokal in anderen Methoden deklariert und initialisiert, dann kannst Du in der main-Methode nicht mehr so drauf zugreifen.
 

xehpuk

Top Contributor
Ändere mal die Rückgabewerte von
Code:
txtFileList()
und
Code:
tifFileList()
zu
Code:
String[]
.
Die Rückgabewerte in der
Code:
main()
dann als
Code:
txtName
und
Code:
tifName
speichern.
Zu deinen Schleifen:
Code:
=
sollte da wohl
Code:
<
heißen. Und die Gleichheit von Strings überprüft man mit
Code:
equals()
, nicht mit
Code:
==
. Des Weiteren solltest du in den Methoden die Dateiendungen entfernen, da du sonst bei bspw.
Code:
"test.txt".equals("test.tif")
natürlich
Code:
false
zurückbekommst.
Vorsicht auch bei den Filtern. Diese sollten den Dateinamen case-insensitive überprüfen.
 
Zuletzt bearbeitet:

JuiceRob

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

Neue Themen


Oben