[英]Relative vs Absolute Paths Java
我明天將參加編程迷你競賽,我們將需要在給定的閃存驅動器上創建程序。 評委不會編輯我們的代碼,因此它可以運行,我擔心閃存驅動器號會更改,然后我的程序將無法找到需要讀取的文本文件。
我一直為我的閃存驅動器使用以下路徑:
FileReader file = new FileReader("E:/BPA/Crypto/input.txt");
即使法官計算機上的閃存驅動器名稱與我的閃存驅動器上的字母名稱不同,我是否有辦法保證我的程序能夠讀取文本文件? 謝謝!
你可以
Class.getResourceAsStream(String name)
獲取文件的InputStream
例如,如果您有類xyzA
input.txt
復制到src文件夾到x / y / z包中 InputStreamReader
作為InputStreamReader fileStream = new InputStreamReader(A.class.getResourceAsStream("input.txt"));
如果您不確定文件將是哪個驅動器,則可以執行以下操作
char drive = 'A';
String filePath = ":/BPA/Crypto/input.txt";
while(drive != 'Z')
{
try{
Scanner readFromFile = new Scanner(new File(drive + filePath));
readFromFile.close(); //add this if you simply want the path or drvie letter
break;
}catch(FileNotFoundException error)
{
System.out.println("Drive: " + drive + " did not contained file in " + drive + filePath);
}
drive += 1;
}
基本上,這個想法是嘗試打開文件以從A到Y的不同驅動器進行讀取。顯然,您可以走得更遠,但我將假設AY驅動器將安全地耗盡所有運行您可能運行的驅動器的位置軟件。
在您獲得While循環的時間時,變量“ drive”將包含所需驅動器的正確字母。 您可以將其修改為返回字母或文件路徑的函數,或者在嘗試從文本文件讀取時僅使用一次。 由你決定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.