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.
j'utilise ce code trouvé sur la même page.
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";} }
ça compile mais j'ai une erreur quand j'essaie de trouver le type du fichier:
j'ai essayé avec les autre librairies (Java Mime Magic, mime-util) mais j'ai à chaque fois des erreurs au lancement du programme...
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
Partager