如何访问我的 Maven Web 服务项目的资源目录中的文件?

我的 Maven Web 服务项目具有以下基本结构:


MyWebService\

|-- src\

|   |-- main\

|   |   |-- java\

|   |   `-- resources\

|   |       `-- csvfiles\

|   |           `-- data.csv

|   `-- test\

`-- target\

    |-- classes\

    `-- test-classes\

我正在尝试访问csvfiles我的resources子目录的子目录中的 .csv 文件。


我有一个带有此代码的课程:


public class ReadCSVFiles {

    public void read(){

        String separator = System.getProperty("file.separator");

        ClassLoader cl = ReadCSVFiles.class.getClassLoader();

        URL url = cl.getResource(separator + "src" + separator + "main" + separator + "resources" + separator + "csvfiles" + "data.csv");

        url.toString();

    }

}

路径最终是:


\src\main\resources\csvfiles\data.csv

我也试过这条路:


src\main\resources\csvfiles\data.csv

每当我运行我的应用程序时,我总是会得到一个NullPointerException在线的url.toString()。


那么,我该如何访问这些 .csv 数据文件呢?


largeQ
浏览 146回答 2
2回答

万千封印

如果您使用类加载器在类路径(资源文件夹)中获取资源,只需使用相对路径:ReadCSVFiles.class.getClassLoader().getResource("csvfiles/data.csv");Javadoc

潇潇雨雨

首先我不知道你为什么要在这里打印URL,classLoader.getResource已经把你的资源目录作为了这里的根目录。如果您想读取 CSV 并对该文件执行一些操作,则使用 InputStream 直接读取该文件。像下面这样public class ReadCSVFiles {public void read(){&nbsp; &nbsp; String separator = System.getProperty("file.separator");&nbsp; &nbsp; ClassLoader cl = ReadCSVFiles.class.getClassLoader();&nbsp; &nbsp; &nbsp;try (InputStream inputStream = cl.getResourceAsStream("csvfiles/data.csv")) {&nbsp; &nbsp; &nbsp; &nbsp; InputStreamReader streamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);&nbsp; &nbsp; &nbsp; &nbsp; BufferedReader reader = new BufferedReader(streamReader);&nbsp; &nbsp; &nbsp; &nbsp;for (String line; (line = reader.readLine()) != null;) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Process line&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; } catch (IOException e) {&nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();&nbsp; &nbsp; }}}或者,如果您需要获取 URL,然后通过 URL 加载文件,您可以尝试以下操作URL url = cl.getResource("csvfiles/data.csv");Path path = Paths.get(url.toURI());List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java