bonjour

j'essaie de connaitre le type d'un fichier sans avoir son extension.

selon cette page, le meilleur algo de reconnaissance de type est celui d'Aperture.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
private static String getMagicMimeType(File file)
{
	try
	{
		MagicMimeTypeIdentifier mmti = new MagicMimeTypeIdentifier();
		FileInputStream fis = new FileInputStream(file);
		byte[] bytes = new byte[mmti.getMinArrayLength()];
		fis.read(bytes);
		return mmti.identify(bytes, file.getName(), null);
	}
	catch (FileNotFoundException e) {e.printStackTrace(); return "error";}
	catch (IOException e) {e.printStackTrace(); return "error";}
}
j'utilise ce code trouvé sur la même page.

ça compile mais j'ai une erreur quand j'essaie de trouver le type du fichier:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
        at org.semanticdesktop.aperture.mime.identifier.magic.MagicMimeTypeIdentifier.<init>(MagicMimeTypeIdentifier.java:43)
        at org.semanticdesktop.aperture.mime.identifier.magic.MagicMimeTypeIdentifier.<init>(MagicMimeTypeIdentifier.java:50)
        at javaapplication1.NewApplication.getMagicMimeType(NewApplication.java:525)
        at javaapplication1.NewApplication.openMenuItemActionPerformed(NewApplication.java:544)
        at javaapplication1.NewApplication.access$1200(NewApplication.java:66)
        at javaapplication1.NewApplication$12.actionPerformed(NewApplication.java:329)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1225)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        ... 34 more
j'ai essayé avec les autre librairies (Java Mime Magic, mime-util) mais j'ai à chaque fois des erreurs au lancement du programme...