簡體   English   中英

從java程序中刪除硬編碼的文件路徑

[英]Remove hardcoded file path from java program

我創建了一個簡單的 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中有沒有辦法刪除它們? 我經歷了類似的問題,但無法弄清楚如何檢測文件的位置。

我根據建議進行了更改,它對我有用-

// 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);

您可以將文件位置存儲在屬性文件中,然后在運行時將文件位置從中讀取到變量中。 作為安裝過程的一部分,您的安裝程序必須將文件位置存儲在屬性文件中。

您還可以將文件存儲在應用程序類路徑中並使用相對路徑名來訪問它。

我認為這不是您所問問題的答案,但它可以解決您的問題。 您使用的是絕對路徑,這意味着您指定文件的整個 URL,您可以改為使用相對路徑,相對於您的應用程序的位置,就像您的 JAR 中有 .class 文件一樣,您可以為您的文件創建一個文件夾,它將始終位於相對於程序位置的相同位置。

所以而不是這個:

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

你可以有這個:

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

或類似的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM