Ich habe den Teil von java.net.URL # getPath überprüft
Der Inhalt des Artikels wird mit Java 8 überprüft.
Überblick
Notieren Sie sich, wie das '/' in der von getPath () erhaltenen Zeichenfolge behandelt wird, da ich jedes Mal, wenn ich den Code schreibe, aufgeregt bin.
Zusammenfassung
- Nur '/' wird zurückgegeben, auch wenn der Pfad vollständig weggelassen wurde
- Wenn jedoch sowohl Host als auch Pfad nicht vorhanden sind, wird eine leere Zeichenfolge zurückgegeben.
- Das nachfolgende '/' wird nicht weggelassen
- Es sollte nicht darauf hingewiesen werden, da es überhaupt nicht weggelassen werden sollte
Beispiel
URL |
getPath() |
http://host |
/ |
http://host/ |
/ |
http://host/path |
/path |
http://host/path/ |
/path/ |
http://host?query |
/ |
http://host/?query |
/ |
http://host/path?query |
/path |
http://host/path/?query |
/path/ |
http:// |
(Leerer String) |
http:/// |
/ |
http:///path |
/path |
Zu beachtende Punkte
- Es wird garantiert mit '/' begonnen, daher ist die folgende Beschreibung in Ordnung
path.startsWith("/path");
- Es beginnt garantiert mit '/'. Wenn Sie also ein Element mit split ("/") ausschneiden, ist das erste Element immer eine leere Zeichenfolge ... Sie müssen es überspringen.
- ** Beachten Sie, dass split ("/") ein Array der Größe 0 für Pfade mit nur "/" zurückgibt **
String a[]=path.split("/");
if(a[1].equals("path")) {} //Der Weg ist"/"Ausnahme tritt bei auf
- Das nachfolgende '/' wird nicht weggelassen. Seien Sie also vorsichtig, wenn Sie Folgendes schreiben:
path.endsWith("tail"); //"/path/tail/"Wenn ja, wird es falsch sein
- getPath () gibt wahrscheinlich niemals null zurück
- Es sollte nicht null sein, um eine Instanz zu erstellen, indem eine URL-Zeichenfolge an den Konstruktor übergeben wird