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ł?
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.
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ść.
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
2 pytania:
- po co dodajesz to rozszerzenie .xls? masz plik excela ktory nie konczy sie na .xls?
- 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
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).
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" ?
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.
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 :|
Lokalnie ta sama sytuacja.
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.
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()