Open windows explorer in java

Ik ben hier al op zoek naar een antwoord op Stack Overflow, maar ik kon geen antwoord vinden dat voor mij werkte.

Hoe maak ik met behulp van Java een knop waarmee een Verkenner-venster naar een opgegeven map kan worden geopend? Als dit mogelijk is, hoe zorg ik ervoor dat het werkt voor OSX en Linux?

6

2 antwoord

Ik weet niet zeker hoe het werkt in andere besturingssystemen, maar in Windows kun je zoiets gebruiken

Desktop.getDesktop().open(new File("c:\\"));

Bewerk

Vond een andere manier (vink de link naar FileExplorer-klasse aan met dat antwoord). U kunt ook System.getProperty ("os.name") gebruiken om het besturingssysteem te bepalen.

14
toegevoegd
De Desktop -versie heeft het voordeel dat het draagbare code is. De andere manier is dat uw code weet wat "verkenner" moet gebruiken voor het huidige besturingssysteem. (Aan de andere kant mag je kiezen ...)
toegevoegd de auteur Stephen C, de bron
@millimoose Het werkt niet voor mij op Ubuntu 13.04. Ik krijg een IOException: kan URI niet weergeven: bestand:/home /.
toegevoegd de auteur Robin Jonsson, de bron
@RobinJonsson Overweeg een aparte vraag voor uw probleem te maken. Vermeld informatie over de Java-versie. Is het probleem alleen gerelateerd aan de /home -directory? Kun je andere mappen openen? Welke code gebruikt u? Misschien is het probleem met privileges, hoe voer je je applicatie uit?
toegevoegd de auteur Pshemo, de bron
Dit werkt ook met Finder op OS X.
toegevoegd de auteur millimoose, de bron
@MichaelScott Het moet, op voorwaarde dat degene die de AWT-toolkit-implementatie voor dat besturingssysteem heeft geschreven, de open() -methode op een manier heeft geïmplementeerd die een bestandsbeheerder voor een directorypad opent. De manier waarop OS-integratie wordt gedaan in de JDK, het is niet echt mogelijk om dit te garanderen voor elke OS. De JDK zelf implementeert dit alleen voor Windows, Motief of met behulp van gnome_url_show onder X11.
toegevoegd de auteur millimoose, de bron
Dus als ik de getDesktop-code zou gebruiken, zou dit met alle besturingssystemen werken, Stephen?
toegevoegd de auteur Michael Scott, de bron
@millimoose Geweldig! Heel erg bedankt!
toegevoegd de auteur Michael Scott, de bron
javax.swing.JButton myButton = new javax.swing.JButton("BUTTON TEXT");
myButton.addActionListener(new java.awt.event.ActionListener() {

  @Override
  public void actionPerformed(ActionEvent e) {
    java.awt.Desktop.getDesktop().open(new java.io.File("MY PATH NAME HERE"));
  }
});
2
toegevoegd