2011-01-14 7 views
0

url = new java.net.URL(s) funktioniert nicht für mich.url = neu java.net.URL()

Ich habe eine Zeichenfolge C:\apache-tomcat-6.0.29\webapps\XEPServlet\files\m1.fo und muss einen Link erstellen und es meinem Formatierer für die Ausgabe geben, aber ungültige URL erhalten. Es scheint, dass es meine Zeichenfolge nicht zur URL macht. Ich möchte auch erwähnen, dass die Datei m1.fo Datei im Ordner Dateien ist, in meinem Webapp \ Produkt \, und ich gab den vollständigen Pfad zu Zeichenfolge wie: getServletContext().getRealPath("files/m1.fo"). Was mache ich falsch? Wie kann ich den URL-Link erhalten?

+1

@davogotland schreiben - es sollte nicht sein zu 100% zu erwarten. Eine seiner Fragen hat keine Antwort, und einige von ihnen scheinen keinen eindeutigen Gewinner für eine Antwort zu haben. 0% ist ein negativer Anreiz, aber bestrafe niemanden, der nicht 100% oder sogar 75% hat. –

Antwort

0

Ein Dateisystempfad ist keine URL. Eine URL benötigt ein Protokollpräfix für eins. Um das Dateisystem zu referenzieren, benutzen Sie "file:" vor Ihrem Pfad.

+0

Ich setze den Pfad file: /// C: /apache-tomcat-6.0.29/webapps/XEPServlet/files/m1.fo und benutze auch diesen: java.net.URL url = null; \t \t versuchen { \t \t \t url = neue java.net.URL (s); \t \t} catch (java.net.MalformedURLException e) { \t \t \t Fehler = wahr; \t \t \t errorReport + = "ungültige URL: '" + s + "' \ n"; \t \t} \t \t Rückkehr URL; – userN

+0

Hallo. Ich habe meinen Webservice bereits gestartet, formatiere aber die Datei mit statischem Pfad. Jetzt möchte ich den gleichen Pfad beibehalten, aber keine Datei nehmen. Mein Uploader gibt den Pfad wie Datei: /// C: \ Dokumente und Einstellungen \ Administrator \ Desktop \ m1.fo Frage ist: Wie kann ich nur den Namen aus dieser Pfad-Datei: /// C: \ Dokumente und Einstellungen \ Administrator \ Desktop \ m1.fo ??? Vielen Dank im Voraus – userN

+0

Werfen Sie einen Blick auf die URL-Klasse Javadoc. Es gibt eine Reihe von Methoden, mit denen Sie verschiedene Teile der URL abrufen können. –

5

Es ist möglich, ein URL aus einem Dateipfad mit dem java.io.File API zu erhalten:

String path = "C:\\apache-tomcat-6.0.29\\webapps\\XEPServlet\\files\\m1.fo"; 
File f = new File(path); 
URL url = f.toURI().toURL(); 
+2

Du wirst diesen Backslashes entkommen müssen. – dkarp

+0

Sie haben Recht, ich aktualisiere die Nachricht. – Jcs

+2

Sie brauchen in Java keine Backslashes in Dateinamen. Benutzen /. – EJP

1

Versuchen: file: /// C: /apache-tomcat-6.0.29/webapps/XEPServlet/files /m1.fo

1

Es ist nicht vorzuziehen, file: /// zu schreiben. Tatsächlich funktioniert es auf Windows-System, aber in Unix - es gab Probleme. Statt

myReq.put("xml", new String []{"file:" + System.getProperty("file.separator") + 
         getServletContext().getRealPath(DESTINATION_DIR_PATH) + 
         System.getProperty("file.separator") + xmlfile}); 

verwenden, können Sie

myReq.put("xml", new String [] {getUploadedFileURL (xmlfile)}); 

, wo

public String getUploadedFileURL(String filename) { 
    java.io.File filePath = new java.io.File(new 
      java.io.File(getServletContext().getRealPath(DESTINATION_DIR_PATH)), 
      filename); 

    return filePath.toURI().toURL().toString(); 
+0

Ok +1 für mich, aber vielleicht könnte die Lösung klarer dargestellt werden, denke ich. – Payedimaunt

Verwandte Themen