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.

must be accessed by URL rather than file. See the info. page for embedded resource

Thanks for your work, work with getResource. Here is the working code

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 指向 是一个 文件时),但它将失败构建的 Jar。