簡體   English   中英

用java編寫的程序雙擊打開文件

[英]Open a file by double click with a program written in java

我想知道是否可以通過雙擊文件在我的程序中打開一個用 java 編寫的文件?

例如:在我的桌面上有一個由我的程序構建的文件“test.dat”。 如果我嘗試打開這個文件,我的程序就會出現並詢問我想用那個文件做什么。

是否可以使用 java 實現該功能?

操作系統決定哪些應用程序與給定的擴展相關聯。 如果適合您,您可以將操作系統配置為使用您的程序打開所有.dat文件。 或者,創建一個快捷方式或啟動器,告訴您要使用什么。

我明白你在問什么。 您想知道如何將參數從操作系統傳遞到您的應用程序,然后調用您的打開文件方法。

您的 java 程序有一個類,該類有一個 main 方法,該方法被調用以啟動您的應用程序。 此類在清單文件中列為 Main-Class:com.your.package.MainClass。 方法簽名類似於:

public static void main(final String args[]) {

字符串數組 args[] 包含從命令行傳遞給您的程序的任何參數。 當您告訴操作系統將文件與可執行文件相關聯,然后雙擊該文件時,操作系統會將文件名(完整路徑)作為此字符串數組中的第一個參數傳遞給可執行文件。 棘手的部分是您不能只將文件擴展名與 jar 文件相關聯,因為 jar 文件不是可執行文件。 jar 文件實際上與 java.exe 或 javaw.exe 相關聯。 因此,要完成這項工作,您需要創建一個批處理文件(或取決於您的操作系統的 shell 腳本),它調用 java.exe 或 javaw.exe,將類路徑設置為 jar 文件,運行主類,然后傳遞參數到你的程序。 這是在 Windows 上的批處理文件中完成的方式。

"C:\Program Files\Java\jre1.8.0_25\bin\javaw.exe" -cp C:\Path\To\Your\Jar\File.jar com.your.package.MainClass %1

然后,不是將 .dat 文件與 jar 文件相關聯,而是將它與此批處理文件相關聯。 %1 將導致文件名作為 args[0] 傳遞給您的 MainClass,然后您可以將其傳遞給您的 openFile(arg[0]) 方法,瞧,文件已打開。 您也不僅限於 %1。 如果操作系統將多個文件傳遞給您的程序,例如您選擇了多個 .dat 文件,您可以使用 %1 %2 %3 等。 這將在 Unix shell 腳本中以類似的方式完成。

/usr/bin/javac -cp /Path/To/Your/Jar/File.jar com.your.package.MainClass %1

通過雙擊“打開”文件是 Windows 操作系統的一項功能,通過將文件擴展名映射到特定程序來控制。

如果要運行打包在jar文件中的 java 程序,則必須創建所謂的“可運行”jar 並將 jar 擴展名映射到名為javajavaw程序。

暫無
暫無

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

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