繁体   English   中英

JAVA如何在Project中引用文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM