从Java程序中删除硬编码的文件路径

问题描述 投票:1回答:3

我创建了一个简单的Java程序,在其中创建了一个文本文件并读取其中写入的数据。问题是我不想对文件的路径进行硬编码,因为在开发应用程序之后,我为程序创建了一个安装程序包,该程序包允许用户在其系统上安装它。现在的问题是最终用户如何在任何地方(即在其C,D或E驱动器中)安装文件,在这种情况下,我会遇到FileNotFoundException异常。

我的代码-这是我用来创建一些文本并将其写入文本文件的代码。

FileWriter file = new FileWriter("E:\\TextFile.txt",true);
BufferedWriter writer = new BufferedWriter(file);
writer.write(input);
write.newLine();
write.close();

这是我用来从文本文件中读取文本的代码。

FileReader read = new FileReader("E:\\TextFile.txt");
BufferedReader data = new BufferedReader(read);

我还有另一个文件,我对该文件的路径进行了硬编码。

System.setProperty("webdriver.chrome.driver","D:\\New Folder\\chromedriver.exe");

您可以在我的所有代码中看到,我对路径进行了硬编码(“ E:\ TextFile.txt”,“ E:\ TextFile.txt”和“ D:\ New Folder \ chromedriver.exe”)。java中有什么方法可以删除它们吗?我经历了类似的问题,但无法弄清楚如何检测文件的位置。

java file path filereader filewriter
3个回答
2
投票

我根据建议进行了更改,并且对我有用-

// This give me the path of the application where it is installed
String Path = new File("").getAbsolutePath();

然后我添加文件名以及获取文件的路径。

// Here i am adding the name of the file to the path to read it 
FileReader  read = new FileReader(Path+"\\TextFile.txt"); 

// Here i am adding the name of the file to the path to write it 
FileWriter file = new FileWriter(Path+"\\TextFile.txt",true);

0
投票

您可以将文件位置存储在属性文件中,然后在运行时从文件位置读取文件位置到变量中。在安装过程中,安装程序必须将文件位置存储在属性文件中。

您还可以将文件存储在应用程序的类路径中,并使用相对路径名进行访问。


0
投票

我不认为这是您要问的答案,但这是您的问题的解决方案。您正在使用的是一个绝对路径,这意味着您可以指定文件的整个URL,而可以使用相对于应用程序位置的相对路径,就像JAR中有.class文件一样,有一个用于存放文件的文件夹,并且该文件夹始终相对于程序位置位于同一位置。

所以代替这个:

FileReader read = new FileReader("E:\\TextFile.txt");

您可以拥有这个:

FileReader read = new FileReader("..\MyFiles\TextFile.txt");

或类似的东西。

© www.soinside.com 2019 - 2024. All rights reserved.