簡體   English   中英

相對路徑與絕對路徑Java

[英]Relative vs Absolute Paths Java

我明天將參加編程迷你競賽,我們將需要在給定的閃存驅動器上創建程序。 評委不會編輯我們的代碼,因此它可以運行,我擔心閃存驅動器號會更改,然后我的程序將無法找到需要讀取的文本文件。

我一直為我的閃存驅動器使用以下路徑:

FileReader file = new FileReader("E:/BPA/Crypto/input.txt");

即使法官計算機上的閃存驅動器名稱與我的閃存驅動器上的字母名稱不同,我是否有辦法保證我的程序能夠讀取文本文件? 謝謝!

你可以

  1. 將文件放入您的源中
  2. 使用Class.getResourceAsStream(String name)獲取文件的InputStream

例如,如果您有類xyzA

  1. input.txt復制到src文件夾到x / y / z包中
  2. 獲得相應的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.

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