所以,我的問題很簡單(我不夠聰明,找到答案)打開文件時發送給應用程序的內容是什麼?
當你點擊一個文件,如blahblahblah.txt
。由於您的默認文本編輯器是textedit.app
例如,計算機是否將應用程序blahblahblah.txt
的文件路徑作爲參數發送。
對不起,我新來處理文件。
我問這個問題的原因是因爲,如果我在.exe
內打包一個.jar
文件,我很困惑計算機如何處理這個問題。
所以,我的問題很簡單(我不夠聰明,找到答案)打開文件時發送給應用程序的內容是什麼?
當你點擊一個文件,如blahblahblah.txt
。由於您的默認文本編輯器是textedit.app
例如,計算機是否將應用程序blahblahblah.txt
的文件路徑作爲參數發送。
對不起,我新來處理文件。
我問這個問題的原因是因爲,如果我在.exe
內打包一個.jar
文件,我很困惑計算機如何處理這個問題。
將使用不同的機制,具體取決於操作系統以及您實際執行的操作。
當您在文件雙擊(說)編輯器打開它,操作系統將通常:
(細節是特定於操作系統的,但與我認爲你確實無關)
但是,當啓動一個包裝在EXE中的JAR文件時,EXE本身將負責啓動JVM。它如何實現將取決於EXE如何生成;即您使用的是第三方工具。
無論哪種方式,當您運行包裝JAR的EXE時會發生什麼,可能與您在文本文件上雙擊時發生的情況有所不同。
這是高度系統特定的。一般來說,你所描述的是正在使用的圖形化外殼的功能。
一些系統,例如太監,根本沒有文件擴展的概念。擴展只是文件命名約定。 Enuchs圖形shell必須解析文件名才能找到擴展名。
其他操作系統具有文件擴展名或類型與文件名分開編碼的文件系統。
在Windoze上(它確實存儲文件擴展名)應用程序映射是通過註冊表完成的。
在Mac上,有一個啓動服務數據庫來完成映射。它比Windoze系統更精細。
在命令行中,情況完全不同。在太監的命令行中,「擴展」是毫無意義的。
在其他系統上,有默認擴展名。如果你是在Windoze提示符,鍵入
程序
命令解釋尋找一個「節目」帶有.com,.bat和.exe文件。
在VMS,
řPROGRAM
導致命令解釋器以尋找PROGRAM.EXE並運行它。或
@file
喀斯命令解釋器來查找並執行命令文件file.com。
因此,你處理兩個系統的具體變量:
是否底層文件系統支持的文件擴展名?
shell如何將文件擴展名映射到應用程序。