如何在Java中定义一个相对路径(视窗)(How to define a relative path

2019-07-17 23:12发布

这里是我的项目的结构:

我需要阅读config.propertiesMyClass.java 。 我试图用一个相对路径这样做如下:

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

这给了我下面的错误:

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

我如何定义Java中的相对路径? 我使用的是JDK 1.6和Windows工作。

Answer 1:

尝试这样的事情

String filePath = new File("").getAbsolutePath();
filePath.concat("path to the property file");

所以,你的新文件指向它创建的路径,通常是项目的主文件夹。

[编辑]

作为@cmc说,

    String basePath = new File("").getAbsolutePath();
    System.out.println(basePath);

    String path = new File("src/main/resources/conf.properties")
                                                           .getAbsolutePath();
    System.out.println(path);

这两个给出相同的值。



Answer 2:

 File f1 = new File("..\\..\\..\\config.properties");  

这条道路试图访问文件在项目目录,然后刚刚访问文件这样。

File f=new File("filename.txt");

如果你的文件是OtherSources/Resources

this.getClass().getClassLoader().getResource("relative path");//-> relative path from resources folder


Answer 3:

值得一提的是,在某些情况下,

File myFolder = new File("directory"); 

不指向根元素。 例如,当你把你的应用程序在C:驱动器( C:\myApp.jar ),然后myFolder点(窗口)

C:\Users\USERNAME\directory

代替

C:\Directory


Answer 4:

首先,请参阅绝对路径和相对路径的不同在这里 :

绝对路径总是包含根元素,并找到该文件所需的完整目录列表。

可替换地,相对路径需要,以便访问一个文件中的另一个路径进行组合。

在构造器文件(字符串路径名),Javadoc中的File类说,

的路径名,是否抽象或字符串形式,可以是绝对的或相对的。

如果你想获得相对路径,你必须从当前工作目录difine路径FLE或directory.Try使用系统属性来获得this.As你drawed图片:

String localDir = System.getProperty("user.dir");
 File file = new File(localDir + "\\config.properties");

此外,你应该尽量避免使用类似“‘’../”,‘/’,及其他相关文件位置的相对路径相似,因为当文件被移动,这是很难处理的。



Answer 5:

 public static void main(String[] args) {
        Properties prop = new Properties();
        InputStream input = null;
        try {
            File f=new File("config.properties");
            input = new FileInputStream(f.getPath());
            prop.load(input);
            System.out.println(prop.getProperty("name"));
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

您还可以使用
路径PATH1 = FileSystems.getDefault()的getPath(System.getProperty( “的user.home”), “下载”, “somefile.txt”);



Answer 6:

我是有连接的截图使用我的图像文件的相对路径ExtentReports问题。 我的当前执行时目录是 “C:\ Eclipse的64位\蚀\工作空间\ SeleniumPractic”。 在此,我创建的文件夹ExtentReports为report.html和下面的截图image.png两个。

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);

这会在ExtentReports文件夹中的报告和图像,但报告被打开,(空白)图像检查,悬停在图像SRC时显示“无法装载图像” SRC =“\ ExtentReports \ QXKmoVZMW7.png”。

这是由前缀为与系统属性“user.dir来”图像的相对路径和文件名来解决。 所以这完美的作品和形象出现在HTML报告。

克里斯

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


Answer 7:

例如春季启动。 我的WSDL文件是资源“WSDL”文件夹中。 到WSDL文件的路径为:

资源/ WSDL / WebServiceFile.wsdl

为了得到一些方法来这个文件,你可以做以下路径:

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


文章来源: How to define a relative path in java (Windows)