Java-Otwarcie folderu

0

Witam,
Mam problem z otwarciem folderu przy naciśnięciu przycisku...
Jeśli zrobię tak:

File pliczek = new File("C:\\");
				Desktop desktop = null;  
  
				if (Desktop.isDesktopSupported()) {  
				desktop = Desktop.getDesktop();  
				}  
				try
                                {  
				desktop.open(pliczek);  
				}  
				catch (IOException ex){  
				} 

To wszystko ładnie się otwiera, czyli dysk C.
Jeśli zamienię C:\ na C:\Download to folder już się nie otwiera. Jak zmienię C:\ na D:\ też już się nie otwiera, o co może chodzić?

0

Nie wiem co jest przyczyną, ja otwieram

desktop.browse(pliczek.toURI());

i nie mam problemów.
Masz bezsensowną obsługę błędów, minimum to:

catch(IOException ex){
    System.out.println(ex);
}
0

Próbowałem Twojego polecenia, też nie działa... Tylko działa C:\.
A co do catch to nie wpisywałem jeszcze nic na razie bo nie mogę sobie z tym poradzić, ale w sumie dobrze wpisać coś to wtedy będę wiedział jaka przyczyna i w jakim bloku jestem. Wiem, gdy mi nie otwiera jestem w bloku try bo nic mi nie wyrzuca. A programu wtedy nie da się zamknąć, nie odpowiada... Trzeba zrobić to przez menedżer zadań. Hm... Nie mam już pojęcia o co może chodzić;/
A pliki z danych ścieżek też bez problemu otwiera. Tylko problem z innymi folderami oprócz C:\

0

Komunikaty o błędach trzeba wyświetlać zwłaszcza wtedy gdy program nie działa. Jeśli program się nie chce zamknąć, to zrób tak:

catch(Exception ex){
    System.out.println(ex);
    System.exit(0);
}

(browse i open mogą rzucać wyjątki różnego typu, nie tylko IOException).

0

Nie zamyka, ale nie wchodzi w blok catch więc nic to nie da;) Jest w try ale coś nie pyka bo się foldery nie chcą otwierać...

bogdans napisał(a):

(browse i open mogą rzucać wyjątki różnego typu, nie tylko IOException).

Racja...Dziwne, że u Ciebie działa a u mnie nie;/

UPDTAE =>>
Próbowałem wszystkie wyjątki: IOException, NullPointerException, IllegalArgumentException, UnsupportedOperationException, SecurityException
Efekt? Blok try, nic nie otwiera.

0

To dopisz blok finally i w nim kończ program.

0

Ok ale co z tego jak zakończę program jak nie uzyskam tego co chcę czyli otwarcia danego folderu...

UPDATE-> Postanowiłem uruchomić maszynę wirtualną z takim samym systemem co mam, tam działa. Więc coś tutaj musi być namieszane na systemie, tylko nie mam pojęcia co.... Ale z tym już niestety sam muszę sobie poradzić.

A jest może inny sposób aby otwierać foldery?:)

W sumie jeśli otwiera mi pliki, a folderów nie to mogę napisać w C++ otwarcie folderu, a w Javie otworzyć plik exe i tyle;)

0

Jest, komponent JFileChooser.

0

A jak nim niby folder otworzyć?

0
JFileChoose fc = new JFileChooser();
fc.showOpenDialog();
0

No tak, otworzy mi OKNO DO WYBORU PLIKU. A Folder tym jak otworzyć? Przecież to tylko okno dialogowe do wyboru plików, a folderu chyba nawet tym się nie da wskazać? A nawet jak bym wskazał to co? Jak go otworzyć?

0

Omg, zaznacz, kliknij, a potem zrób z wybranym plikiem co chcesz.
Dokumentacja: http://docs.oracle.com/javase/7/docs/api/javax/swing/JFileChooser.html

0
bogdans napisał(a):

Omg, zaznacz, kliknij, a potem zrób z wybranym plikiem co chcesz.

Nie wiem czy rozróżniasz plik od folderu. Chyba nie... JFileChooser wybiera mi pliki, jak jestem na folderze to tylko jest opcja otwórz. Zrobiłem to trochę w inny sposób:

ProcessBuilder program = new ProcessBuilder(new String[] { "cmd.exe", "/C",
			"explorer.exe  sciezka"});
			
			try 
			{
				program.start();
			}
			catch (IOException e1)
			{
				e1.printStackTrace();
			}
1

Zajrzałeś do dokumentacji, chyba nie.

0

Sorki ale na prawdę nie widzę żadnej metody odpowiedzialnej za otwarcie pliku, katalogu;/

1 użytkowników online, w tym zalogowanych: 0, gości: 1