这里是我的项目的结构:
我需要阅读config.properties
内MyClass.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工作。
尝试这样的事情
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);
这两个给出相同的值。
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
值得一提的是,在某些情况下,
File myFolder = new File("directory");
不指向根元素。 例如,当你把你的应用程序在C:
驱动器( C:\myApp.jar
),然后myFolder
点(窗口)
C:\Users\USERNAME\directory
代替
C:\Directory
首先,请参阅绝对路径和相对路径的不同在这里 :
绝对路径总是包含根元素,并找到该文件所需的完整目录列表。
可替换地,相对路径需要,以便访问一个文件中的另一个路径进行组合。
在构造器文件(字符串路径名),Javadoc中的File类说,
的路径名,是否抽象或字符串形式,可以是绝对的或相对的。
如果你想获得相对路径,你必须从当前工作目录difine路径FLE或directory.Try使用系统属性来获得this.As你drawed图片:
String localDir = System.getProperty("user.dir");
File file = new File(localDir + "\\config.properties");
此外,你应该尽量避免使用类似“‘’../”,‘/’,及其他相关文件位置的相对路径相似,因为当文件被移动,这是很难处理的。
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”);
我是有连接的截图使用我的图像文件的相对路径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);
例如春季启动。 我的WSDL文件是资源“WSDL”文件夹中。 到WSDL文件的路径为:
资源/ WSDL / WebServiceFile.wsdl
为了得到一些方法来这个文件,你可以做以下路径:
String pathToWsdl = this.getClass().getClassLoader().
getResource("wsdl\\WebServiceFile.wsdl").toString();