Ich möchte überprüfen, ob alle Dateien in einem Verzeichnis einen bestimmten Typ haben. Was ich bisher gemacht habe ist.Überprüfen Sie, ob die Datei einen bestimmten Typ hat
private static final String[] IMAGE_EXTS = { "jpg", "jpeg" };
private void validateFolderPath(String folderPath, final String[] ext) {
File dir = new File(folderPath);
int totalFiles = dir.listFiles().length;
// Filter the files with JPEG or JPG extensions.
File[] matchingFiles = dir.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.getName().endsWith(ext[0])
|| pathname.getName().endsWith(ext[1]);
}
});
// Check if all the files have JPEG or JPG extensions
// Terminate if validation fails.
if (matchingFiles.length != totalFiles) {
System.out.println("All the tiles should be of type " + ext[0]
+ " or " + ext[1]);
System.exit(0);
} else {
return;
}
}
Dies funktioniert gut, wenn der Dateiname eine Erweiterung wie {file.jpeg, file.jpg} haben Dies schlägt fehl, wenn die Dateien keine Erweiterungen {Datei1 Datei2}. Wenn ich die folgenden in meinem Terminal erhalte ich:
$ file folder/file1
folder/file1: JPEG image data, JFIF standard 1.01
Update 1:
ich die magischen Zahlen der Datei zu erhalten versucht, zu überprüfen, ob es JPEG ist:
for (int i = 0; i < totalFiles; i++) {
DataInputStream input = new DataInputStream(
new BufferedInputStream(new FileInputStream(
dir.listFiles()[i])));
if (input.readInt() == 0xffd8ffe0) {
isJPEGFlag = true;
} else {
isJPEGFlag = false;
try {
input.close();
} catch (IOException ignore) {
}
System.out.println("File not JPEG");
System.exit(0);
}
}
Ich stieß auf ein anderes Problem. Es gibt einige .DS_Store Dateien in meinem Ordner. Irgendeine Idee, wie man sie ignoriert?
Sie meinen, wie überprüfen Sie, ob die Datei ohne Erweiterung eine JPEG-Datei ist oder nicht? –
Ja, Sie haben Recht !! –
Nur weil ein Dateiname mit einer bestimmten Erweiterung endet, bedeutet dies nicht, dass der _content_ dieser Datei seinem Namen entspricht. Sie müssen den Inhalt der Datei lesen (mindestens die ersten N Bytes) - das ist der Befehl 'datei' ... –