60 Stimmen

Wie man einen relativen Pfad in Java definiert

Hier ist die Struktur meines Projekts:

here is the structure of my project

Ich muss lesen config.properties innerhalb MyClass.java . Ich habe versucht, dies mit einem relativen Pfad wie folgt zu tun:

// Code called from MyClass.java
File f1 = new File("..\\..\\..\\config.properties");  
String path = f1.getPath(); 
prop.load(new FileInputStream(path));

Dies führt zu der folgenden Fehlermeldung:

..\..\..\config.properties (The system cannot find the file specified)

Wie kann ich in Java einen relativen Pfad definieren? Ich verwende jdk 1.6 und arbeite unter Windows.

1voto

Chris Liston Punkte 145

Ich hatte Probleme beim Anhängen von Screenshots an ExtentReports mit einem relativen Pfad zu meiner Bilddatei. Mein aktuelles Verzeichnis beim Ausführen ist " C:\Eclipse 64-Bit \eclipse\workspace\SeleniumPractic ". Darunter habe ich den Ordner ExtentReports sowohl für den Bericht.html als auch für den Screenshot image.png erstellt (siehe unten).

private String className = getClass().getName();
private String outputFolder = "ExtentReports\\";
private String outputFile = className  + ".html";
ExtentReports report;
ExtentTest test;

@BeforeMethod
    //  initialise report variables
    report = new ExtentReports(outputFolder + outputFile);
    test = report.startTest(className);
    // more setup code

@Test
    // test method code with log statements

@AfterMethod
    // takeScreenShot returns the relative path and filename for the image
    String imgFilename = GenericMethods.takeScreenShot(driver,outputFolder);
    String imagePath = test.addScreenCapture(imgFilename);
    test.log(LogStatus.FAIL, "Added image to report", imagePath);

Dadurch werden der Bericht und das Bild im Ordner "ExtentReports" erstellt, aber wenn der Bericht geöffnet und das (leere) Bild inspiziert wird, wird beim Überfahren des Bildes src="Could not load the image" angezeigt. \ExtentReports\QXKmoVZMW7.png ".

Dies wird dadurch gelöst, dass dem relativen Pfad und Dateinamen für das Bild die Systemeigenschaft "user.dir" vorangestellt wird. Dies funktioniert perfekt und das Bild erscheint im HTML-Bericht.

Chris

String imgFilename = GenericMethods.takeScreenShot(driver,System.getProperty("user.dir") + "\\" + outputFolder);
String imagePath = test.addScreenCapture(imgFilename);
test.log(LogStatus.FAIL, "Added image to report", imagePath);

1voto

Kirill Ch Punkte 4630

Beispiel für Spring Boot. Meine WSDL-Datei befindet sich in Resources im Ordner "wsdl". Der Pfad zur WSDL-Datei lautet:

resources/wsdl/WebServiceFile.wsdl

Um den Pfad von einer Methode zu dieser Datei zu erhalten, können Sie wie folgt vorgehen:

String pathToWsdl = this.getClass().getClassLoader().
                    getResource("wsdl\\WebServiceFile.wsdl").toString();

0voto

Christophe Roussy Punkte 15183

Seit Java 7 haben Sie Path.relativize() :

"... ein Pfad definiert auch die Methoden resolve und resolveSibling, um Pfade zu kombinieren. Die relativize Methode, die verwendet werden kann, um einen relativen Pfad zwischen zwei Pfaden zu konstruieren."

0voto

Wenn sich die Datei, wie in Ihrem Diagramm dargestellt, 2 Ebenen über Ihrer src sollten Sie den folgenden relativen Pfad verwenden:

../../config.properties

Bitte beachten Sie, dass wir bei relativen Pfaden Schrägstriche verwenden / und keine Backslashes \ .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X