Datentypfilter

Status
Nicht offen für weitere Antworten.
Z

zero.one

Gast
hi, ich habe 'ne Klasse erstellt, mit welcher ich mittels Strings Ordnerinhalte mit Datenbankeinträgen vergleiche.
Nun will ich aber nur nach bestimmten Dateien im Ordner suchen (in dem Fall '.iso'). Wie kann ich da am besten vorgehen? Mit 'nem FilenameFilter? Oder anders?

Hier mal die Klasse:
Code:
public String[] vergleich() {
		String[] retval = null;
		String[] direc = new File("Images").list();
		if (direc == null || direc.length <= 0)
			return null;
		Vector<String> folder = new Vector<String>();
		for (int i = 0;i < direc.length; i++)
			folder.add(direc[i]);
		HSQL db = HSQL.getInstance();
		try {
			ResultSet rsl = db.dql("select Pr_Pfad from T_Programme;");
			Vector<String> vec = new Vector<String>();
			while (rsl.next()) {
				vec.add(rsl.getString(1));
			}
			
			for (int i = 0; i < folder.size(); i++){
				for (int j = 0; j < vec.size(); j++) {
					if (("C:\\Programme\\Manager\\Images\\" + folder.get(i)).equalsIgnoreCase(vec.get(j))) {
						folder.removeElementAt(i);
						i = 0;
						break;
					}
				}
			}
		
		} catch (SQLException e) {
			e.printStackTrace();
		}
		retval = new String[folder.size()];
		if (folder.size() >= 1) {
			for (int i = 0; i < folder.size(); i++)
				retval[i] = folder.get(i);
		}
		
		return retval;
	}
 

The_S

Top Contributor
Da du ja mit Strings und nicht mit File arbeitest, bietet sich folgende Überprüfung an

Code:
if (strDatei.toLowerCase().endsWith(".iso")) {
   System.out.println("endet auf .iso");
}
 
Z

zero.one

Gast
Also, ich hab das jetzt so gelöst (nur falls jemand sowas zufällig auch macht... :wink: ):

Code:
public String[] vergleich() {
		String[] retval = null;
		File[] direc = new File("Images").listFiles(new myFileFilter());
		
		if (direc == null || direc.length <= 0)
			return null;
		Vector<String> folder = new Vector<String>();
		for (int i = 0;i < direc.length; i++)
			folder.add(direc[i].getName());
		HSQL db = HSQL.getInstance();
		try {
			ResultSet rsl = db.dql("select Pr_Pfad from T_Programme;");
			Vector<String> vec = new Vector<String>();
			while (rsl.next()) {
				vec.add(rsl.getString(1));
			}
			for (int i = 0; i < folder.size(); i++){
				for (int j = 0; j < vec.size(); j++) {
					if (("C:\\Programme\\Manager\\Images\\" + folder.get(i)).equalsIgnoreCase(vec.get(j))) {
						folder.removeElementAt(i);
						i = 0;
						break;
					}
				}
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		retval = new String[folder.size()];
		if (folder.size() >= 1) {
			for (int i = 0; i < folder.size(); i++)
				retval[i] = folder.get(i);
		}
		return retval;
	}
}
class myFileFilter implements FilenameFilter{
	public boolean accept(File f, String s) {
		return s.toLowerCase().endsWith(".iso");
	}	
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben