尝试通过执行读取输入等基本功能来练习Java。
我正在尝试解析在以下位置找到movies-sample.txt
:
C:UniversityBigDataManagementData-Mininghw1srcmainresourcesmovies-sample.txt
尝试movies-sample.txt
从
C:UniversityBigDataManagementData-Mininghw1srcmainjava
univbigdatacourseMoviesReviewsQueryRunner.java
使用此处找到的有关如何逐行解析大文件的答案。
File file = new File("../../../../../resources/movies-sample.txt");
我收到以下错误:
系统找不到指定的路径
鉴于上述两条路径,我做错了什么?
如果它是一个 Web 应用程序,那么 resources
文件夹是您的根元素,否则它将是注释中提到的src
文件夹。
在您的情况下,当您编写独立的 Java 程序并且您的文件位于 resources
文件夹中时,您可以使用 CLassLoader
将文件作为流读取。
这是你的代码应该如何:
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
InputStream is = classloader.getResourceAsStream("movies-sample.txt");
然后,您将能够逐行读取is
流。
如果直接从命令行运行程序,则路径必须与当前目录相关。
如果从 IDE 运行程序,则 runnin 程序的当前目录取决于 IDE 及其配置方式。
您可以使用System.getProperty("user.dir")
确定当前目录是什么
无论如何,在应用程序中对路径进行硬编码始终是一件坏事,因为您无法确保从何处启动运行。也:
- 它是一个用户资源,那么它的路径必须以某种方式输入(在GUI应用程序中打开(
- 它是应用程序正常运行所需的资源,它应该以某种方式嵌入到应用程序本身中(查找资源包(
- 它是一种可选的外部资源(例如配置文件,或在配置文件中指定的路径(,其位置应以某种方式计算。