jfilechooser i problem z katalogiem

0

Witam.
Mam kolejny problem. Za pomocą jfilechooser zapisuje jakieś pliki. Jednak nie pozawala mi zapisać w katalogu w którego nazwie jest spacja bo próbuje się wtedy wbić do katalogu do pierwszej spacji pomijając resztę adresu. Ma ktoś jakiś może pomysł?

0

Pokaz kod tego file choosera, i kod ktory zapisuje do wybranego katalogu, zebysmy cos wiecej wiedzieli. Z tego co napisales zgaduje ze z file choosera bierzesz nazwe pliku w postaci string (np poprzez getName(), albo dostajesz obiekt File poprzez getSelectedFile(), ale pozniej sam zmieniasz to na string) i pozniej brakuje ci np cudzyslowiow wokol nazwy pliku, aby katalog ze spacja byl traktowany poprawnie. Zgaduj zgadula.

0
File plik2 = null;
    	 JFileChooser wyborPliku = new JFileChooser();
        File x = new File("\\\\SERWER-W2003\\Dokumenty\\Karty napraw\\excel");
        wyborPliku.setCurrentDirectory(x);     
       
       int r = wyborPliku.showSaveDialog(null);
       if (r == JFileChooser.APPROVE_OPTION) {
    	   System.out.println(wyborPliku.getSelectedFile());
    	   File f=wyborPliku.getSelectedFile();   	
    	   String rozszerzenie=f.getName().substring(f.getName().length()-4,f.getName().length());
    	   if(rozszerzenie.equals(".xls")){
    		   
    		   plik2=wyborPliku.getSelectedFile();
    	   }else{	   
    		 plik2=new File(wyborPliku.getSelectedFile().getPath()+".xls");
    	   }
       }        
        return plik2;

Tak wygląda ta funkcja. Zależy mi na tym aby dodawało rozszerzenie więc to może być ten problem z adresem do katalogu. Więc nie wiem czy można jakoś to obejść.

0

Aha przez obie funkcje
wyborPliku.getSelectedFile()
i
plik2=new File(wyborPliku.getSelectedFile().getPath()+".xls");
Jest ten sam efekt czyli nie może znaleźć \SERWER-W2003\Dokumenty\Karty ucinając napraw\excel");
Mimo że kod

File x = new File("\\\\SERWER-W2003\\Dokumenty\\Karty napraw\\excel");
        wyborPliku.setCurrentDirectory(x);    

dział poprawnie

0

2 pytania:

  1. po co dodajesz to rozszerzenie .xls? masz plik excela ktory nie konczy sie na .xls?
  2. nie jestem pewien czy mozesz tak po prostu sobie wybrac plik z innego komputera i probowac do niego zapisywac lub czytac za pomoca strumieni itp - moze to jest problemem?
    pozdrawiam
0

To jest tylko część kodu. Ten program tworzy plik excela. Dlatego potrzebuje aby było rozszerzenie xls. Mogę zapisać na innym komputerze nawet w sieci o ile w nazwie folderu nie ma spacji, gdy jest spacja sypie mi błędy (obcina wszystko po spacji i nie znajduje pliku).

0

A to

    File x = new File("\\\\SERWER-W2003\\Dokumenty\\Karty napraw\\excel");
    wyborPliku.setCurrentDirectory(x);   

działa ? To znaczy po otwarciu JFileChoosera, jesteś w katalogu "...\Karty napraw\excel" ?

0

Tak. Domyślny katalog w jfilechooser jest ten co podałem. Niestety domyślny katalog się otwiera jednak potem nie chce do niego zapisać. I nie mam pojęcia czemu.

0

Probowales to zrobic lokalnie? Czy tez sie wywala? Ja probowalem lokalnie i dziala bez problemu, ale ja uzywam linuksa, no i aktualnie nie mam jak sprawdzic na podobnej konfiguracji co Ty. Przykro mi ale niestety nic nie przychodzi mi do glowy :|

0

Lokalnie ta sama sytuacja.

0

W sumie nie pokazales jeszcze kodu ktory zapisuje do tego pliku, pokazales tylko w jaki sposob otrzymujesz wybrany przez uzytkownika plik. Moze tam jest jakies cos co nie dziala, bo w sumie w tym kodzie nie widze nic zlego, a do tego mowisz ze nie dziala ci to nawet lokalnie to tym dziwniejsze.

0

Jaki to system ? Na XP nie mam żadnych problemów ze spacjami w nazwach katalogów.
BTW, tak

               File f=wyborPliku.getSelectedFile();           
               String nameOfFile=root.fc.getSelectedFile().getAbsolutePath();
               if(nameOfFile.toLowerCase.endsWith("xls")){
                       
                       plik2=wyborPliku.getSelectedFile();
               }else{           
                     plik2=new File(nameOfFile+".xls");
               }

jest chyba trochę lepiej - krócej i jest niewrażliwe na wielkość liter.
Jak pisałem powyższe, to zobaczyłem różnicę: ja zawsze używam

getAbsolutePath()

u ciebie jest

getPath()

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