[英]How to give relative path for a file?
当我给出twitter.R文件的绝对路径时,它将正确运行。 像这样:
c.eval("source(\"C:\\\\Users\\\\Ruttab\\\\workspace\\\\RserveConnect\\\\src\\\\main\\\\resources\\\\Script\\\\twitter.R\")");
当我给出相对路径时,它不会运行并给我一个错误。 像这样:
c.eval("source(\"/src/main/resources/Resources/Rscripts/twitter.R\")");
如何给出文件twitter.R的相对路径
这是我的项目hieachy:
String relative = new File(base).toURI().relativize(new
File(path).toURI()).getPath();
添加一个示例:
String path = "/var/caiyongji/tmp/abc.txt";
String base = "/var/caiyongji";
String relative = new File(base).toURI().relativize(new File(path).toURI()).getPath();
// relative == "tmp/abc.txt"
导入java.nio.file.Path; 导入java.nio.file.Paths;
public class Test {
public static void main(String[] args) {
Path pathAbsolute = Paths.get("/var/data/stuff/xyz.dat");
Path pathBase = Paths.get("/var/data");
Path pathRelative = pathBase.relativize(pathAbsolute);
System.out.println(pathRelative);
}
}
您可以使用相对路径声明Path
,但这不会解决您的问题。 您不能期望Java进程那样知道源文件的根目录。
您的项目可能会以罐子(或战争)的形式构建和打包,并且通往资源的相对路径可能会发生变化。
正确的解决方案是从类路径中获取它,如本答案所述
简短版本: InputStream input = this.getClass().getResourceAsStream("/Resources/Rscripts/twitter.R");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.