我创建了一个简单的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中删除它们。 我经历了类似的问题,但无法弄清楚如何检测文件的位置。
答案 0 :(得分: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);
答案 1 :(得分:0)
您可以将文件位置存储在属性文件中,然后在运行时将文件位置从该文件读取到变量中。作为安装过程的一部分,您的安装人员必须将文件位置存储在属性文件中。
您还可以将文件存储在应用程序类路径中,并使用相对路径名来访问它。
答案 2 :(得分:0)
我认为这不是你要问的答案,但它是你问题的解决方案。你在那里使用的是一个绝对路径,这意味着你指定文件的整个URL,你可以使用相对路径,它们相对于应用程序的位置,就像你在JAR中有.class文件一样,你可以有一个文件夹,它将始终与程序位置相同。
所以不要这样:
FileReader read = new FileReader("E:\\TextFile.txt");
你可以拥有:
FileReader read = new FileReader("..\MyFiles\TextFile.txt");
或类似的东西。