这可能更像是一种“最佳实践”类型的问题,但我试图在我当前的项目中使用两个文本文档,并且不确定进行阅读和/或存储它们的最佳方法。我目前有将它们的路径硬编码到我的文件阅读器中,这绝对不是我想要的(下面是当前的实现)。
try (BufferedReader reader = new BufferedReader(new FileReader("C:\\e\\t\\c\\.\\text.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
string1 = string1 + " " + line;
}
}
这样可行,但我必须更改使用它的每台计算机的文件位置。
我尝试了什么:
我在Java和编程方面仍然很新,所以如果您需要更多信息或者我还应该提出其他任何信息(或者我的搜索中是否存在类似的问题),请告诉我。谢谢大家!
编辑:
关于我的程序的功能:我正在做的是取一个用户输入的字符串,然后根据我试图上传的文本文件检查它,看看有多少匹配(类似于使用“ctrl + f”对于您试图在页面/文档中找到的每个单词,其中页面/文档是我试图上传的单词库。
我不得不休息一下,但我现在要尝试你的建议。这些都很棒,非常感谢!
答案 0 :(得分:0)
您可以将文件放在应用的资源文件夹中,并按照以下方式使用它们:
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("test.txt").getFile());
如果资源中存在完整的文件,可以使用getResources(“”);浏览应用中的所有资源,然后选择一个作为文本文件的资源。即将它们放在一个特殊的文件夹中,因此区分它们会更容易。
答案 1 :(得分:0)
关于内部资源(如果应用程序中的文本文件是作为应用程序的一部分提供的,则它们是内部资源),项目通常会决定目录结构的内容。通常,在项目中将有源代码所在的“src /”目录,在“src /”下,您可以为您的资源放置一个名为“res /”的文件夹。为避免资源名称冲突,您可以进一步指定包名称,如结构。因此,如果您的类具有包com.example。*,那么您可以在您的类中的res / com / example / Now中放置text.txt,负责读取您可以拥有的资源:
try (InputStream in = getClass().getResourceAsStream("/res/com/example/text.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
String line;
while ((line = reader.readLine()) != null) {
string1 = string1 + " " + line;
}
}
但是,如果文本文件必须由用户系统提供,那么它们是外部资源,在这种情况下,必须在运行时提供它们的路径。通常,作为程序本身的参数。因此,在main()
方法中,捕获文件的路径如下:
String fileName = args[0]; // assuming the user has provided arguments
try (InputStream in = Files.newInputStream(Paths.get(fileName));
BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
String line;
while ((line = reader.readLine()) != null) {
string1 = string1 + " " + line;
}
}
答案 2 :(得分:0)
有许多好的建议,但没有人提到环境变量或系统属性。您可以为您的操作系统定义一个环境变量,并按如下所示进行:
java -jar app.jar -DconfigPath="/home/..."
或者您可以在启动时将应用程序传递给系统变量:
String configPath = System.getProperty("configPath");
然后在代码中使用它:
viewholde