[英]JAVA how to refer the file in Project
我在我的 VS Code 中创建了一个简单的 Java 项目,这里是项目结构。
我想在我的代码中引用wordcount.txt
,但找不到该文件。
这是我的测试代码:
public class BatchJob {
public static void main(String[] args) throws Exception {
// set up the batch execution environment
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
//URL url = BatchJob.class.getClassLoader().getResource("resources/wordcount.txt");
DataSource<String> dataset = env.readTextFile("wordcount.txt");
DataSet<Tuple2<String, Integer>> result = dataset.flatMap(new Tokenizer())
.filter(new FilterFunction<Tuple2<String, Integer>>(){
@Override
public boolean filter(Tuple2<String, Integer> arg0){
return arg0.f1 >0;
}
})
.groupBy(0)
.sum(1);
result.print();
}
public static class Tokenizer implements FlatMapFunction<String, Tuple2<String, Integer>>{
@Override
public void flatMap(String value, Collector<Tuple2<String, Integer>> out) throws Exception {
String[] tokens = value.toLowerCase().split(",");
for (String token : tokens) {
if ( !token.isEmpty() && token.length() > 0) {
out.collect(new Tuple2<String, Integer>(token, 1));
}
}
}
}
}
应用程序资源在部署时将成为嵌入式资源,因此明智的做法是立即开始访问它们。 嵌入式资源必须由 URL 而不是 file 访问。 查看信息。 有关如何形成 URL的嵌入式资源页面。
感谢您的工作,与
getResource
一起工作。 这是工作代码URL url = BatchJob.class.getClassLoader().getResource("wordcount.txt"); DataSource<String> dataset = env.readTextFile( URLDecoder.decode(url.getFile(),"UTF-8") );
不幸的是,这个修复在url.getFile()
出错了。
回到原始建议的粗体部分.. “..必须由 URL 而不是文件访问” :这不是一个建议,也不是一个好的编程实践,而是一个要求。 问题是,一旦应用程序。 构建完成后,资源将位于 Jar 内,不再是File
。 它不能作为File
访问。 因此,虽然从 IDE 运行它时它可能会起作用(当 URL 指向一个文件时),它对于构建的 ZACA268A40E82159FB16B5B74C674E15E 将失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.