簡體   English   中英

如何查看網址http://www.test.com/abc.pdf是文件還是目錄?

[英]how to find out if the url http://www.test.com/abc.pdf is a file or a directory?

我想在java中編寫一些代碼,以確定給定的URL是文件還是目錄。 我怎樣才能做到這一點??

URL本身不具有“文件”或“目錄”的概念。 URL的內容由服務器在請求時響應的任何內容定義。 如果您獲得MIME類型為application/pdf ,則URL表示PDF文件。 如果你得到任何其他東西,那么它不是PDF文件。

在任何URL / URI規范,HTTP規范或MIME類型注冊表中都沒有“目錄”的概念。

因此,網絡服務器無法告訴客戶端 URL解析為目錄......即使它知道這意味着什么。 (在許多情況下,Web服務器不知道/關心目錄本身;例如,典型的RESTful Web API無法識別該概念。)

你的選擇是:

  • 嘗試獲取內容並查看您獲得的內容類型。 但請記住,網絡服務器可能會將“目錄”呈現為任何內容......因此(通常)不可能以這種方式可靠地區分目錄和非目錄。

    如果您想避免下載文件,可以發送HEAD請求而不是GET請求。 這需要使用完全成熟的HTTP客戶端庫而不是URLConnection

  • 更改您的應用程序設計和實現,以便不需要“目錄”概念。

  • 更改您的應用程序,以便決定什么是“目錄”,什么是純粹基於URL的“文件”。 (在一般情況下,這將不起作用......因為沒有普遍觀察到的URL名稱部分的約定,這將允許您進行區分。)

  • 更改為使用URL方案/協議,其中“目錄”是明確定義的概念。 例如“file:”或“ftp:”。

從URL返回的內容本質上不是“文件”或“目錄”。 充其量,它是具有內容類型的數據流。 它通常成為客戶端的“文件”,通過將其保存到文件系統或臨時存儲僅供顯示。 基本上,Web服務器無法告訴客戶端某些東西是使用HTTP的目錄。

您要么必須創建一些客戶端業務邏輯來推斷“目錄”(可能基於URL,可能缺少文件擴展名?)或使用不同的協議。

暫無
暫無

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

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