Tomcat-server, absolute Datei-Zugriff im Krieg webapp

Habe ich eine Feder webapp, deren .war Datei hochgeladen wurde auf einem Tomcat-server. Die meisten der grundlegenden Funktionen arbeiten-wie beabsichtigt - Seitenaufrufe und form der Einreichung.

Mein problem ist jetzt, dass meine webapp muss Lesen und schreiben von Dateien, und ich bin ratlos, wie kann ich dies erreichen (die Datei-I/O zurück java.lang.NullPointerException).

Ich Folgendes code, um den absoluten Pfad zu einer bestimmten Datei vorgeschlagen Titi-Wangsa Bin Damhore zu wissen, den Pfad relativ zum server:

HttpSession session = request.getSession();
ServletContext sc = session.getServletContext();
String file = sc.getRealPath("src/test.arff");
logger.info("File path: " + file);

Hier ist der output-Pfad:

/home/username/tomcat/webapps/appname/src/test.arff

Aber wenn ich überprüft, die Datei-Verzeichnis über WinSCP, die Datei ist der eigentliche Pfad ist:

/home/username/tomcat/webapps/appname/WEB-INF/classes/test.arff

Hier sind meine Fragen:

  1. Wie kann ich diese verwandeln Wege in so etwas wie C:/Users/Workspace/appname/src/test.arff (der ursprüngliche Pfad in meiner lokalen Maschine, die perfekt funktioniert)? Es ist Server Apache Tomcat 6.0.35 und Apache Tomcat 6.0.35.
  2. Warum ist der code der Rückgabe einen anderen Weg im Gegensatz zu den tatsächlichen Pfad?
  3. Wenn die Datei-I/O nicht anwendbar ist, welche alternativen kann ich nutzen?

PS ich brauche nur Zugriff auf zwei Dateien (< 1 MB), damit ich nicht denke, vielleicht brauche ich eine Datenbank verwenden, die Sie enthalten, wie vorgeschlagen, durch minus in dieser thread.

Datei-I/O -

Unten ist der code, den ich verwenden für den Zugriff auf die Datei, die ich brauche.

BufferedWriter writer;
    try {
        URI uri = new URI("/test.arff");
        writer = new BufferedWriter(new FileWriter(
            calcModelService.getAbsolutePath() + uri));

        writer.write(data.toString());
        writer.flush();
        writer.close();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }

InformationsquelleAutor | 2013-12-05

Schreibe einen Kommentar