2009-10-30 11 views
16

Czy istnieje standardowy/dobry sposób konwertowania adresów URL i nazw plików systemu Windows w języku Java?Konwertuj między nazwami plików URL i Windows (Java)?

Próbuję pobrać pliki, ale chcę, aby nazwa pliku Windows była możliwa do przekształcenia z powrotem do oryginalnej nazwy pliku. Pamiętaj, że część adresu URL w zapytaniu jest niezbędna, ponieważ będę pobierać różne strony, które różnią się tylko zapytaniem.

Moim obecnym, hackowskim rozwiązaniem jest zastąpienie niedozwolonych znaków (takich jak "?") Konkretnym ciągiem znaków (np. "QQ"), ale powoduje to, że konwersja z powrotem do adresu URL staje się mniej przejrzysta. Czy istnieje lepszy sposób?

+1

kilka przykładów tego, co starasz się osiągnąć byłoby bardzo pomocny. –

+1

Myślę, że mówi on o zapisywaniu wyników żądania internetowego przy użyciu adresu URL strony internetowej jako nazwy pliku. Wpływa to na problemy z takimi znakami jak "*" i "?", Które są poprawne w adresie URL, ale nieważne jako część nazwy pliku systemu Windows. –

+1

tj. Www.google.com/search?q=bad+urls, które nie byłyby prawidłową nazwą pliku Windows (ze względu na znak zapytania). –

Odpowiedz

22

Można zrobić gorzej niż używać URLEncoder do kodowania URL:

String url = "http://172.0.0.1:80/foo/bar/baz.txt?black=white"; 
String filename = URLEncoder.encode(url, "UTF-8"); 
File file = new File(filename); 

Nazwa pliku staje się prawnym nazwa win32:

http%3A%2F%2F172.0.0.1%3A80%2Ffoo%2Fbar%2Fbaz.txt%3Fblack%3Dwhite 

To jest odwracalna operacja:

String original = URLDecoder.decode(filename, "UTF-8"); 
+0

Dzięki! To działało świetnie! – Paul

+0

Czy działa to również w innych systemach (* nix)? – chakrit

+0

% jest w porządku w systemie unix http://en.wikipedia.org/wiki/Filename – kenny

2

Klasa java.io.File przyjmuje identyfikator URI & | nazwa pliku jako konstruktor, ale zawiera metody oraz getName(). Zakładam, że byłaby to dla ciebie ważna konwersja?

0

Jeśli masz na myśli przekonwertować URL zakodowany do braku enkodera można użyć:

URLDecoder

klasa narzędziowy dla formularza HTML dekodowania. Ta klasa zawiera statyczne metody dekodowania łańcucha znaków z formatu MIME aplikacji/x-www-form-urlencoded.

Sprawdź, czy tego właśnie potrzebujesz.

+0

@Paul: Dodaj próbki danych wejściowych i żądanego ouput, aby lepiej zrozumieć swoje pytanie. – OscarRyz

Powiązane problemy