2013-04-23 95 views
2

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

例如: 在我的桌面上是一個文件「test.dat」,由我的程序構建。如果我試圖打開這個文件,我的程序就會顯示出來,並詢問我想用該文件做什麼。

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

+2

取決於你的IDE,但你想創建一個jar文件:http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks %2Ftasks-33.htm – Lojko 2013-04-23 07:52:31

+1

我不認爲這就是他的意思。他想用他自己的程序保存數據,然後通過雙擊自己的程序來讀取數據。 – 2013-04-23 07:53:43

+0

是的埃裏克,這正是我想要實現 – Markus 2013-04-23 08:18:33

回答

0

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

如果你想運行裝在jar文件,你必須創建所謂的「可運行」瓶和罐子地圖擴展Java程序的程序命名爲javajavaw

+0

實際上你不能確定問題是關於windows的。 – 2013-04-23 07:54:33

4

它是決定哪些應用程序與給定擴展名關聯的操作系統。你可以配置你的操作系統在你的程序中打開全部.dat文件,如果這對你有用。或者,創建一個快捷方式或啓動器,告訴使用什麼。

+1

好的謝謝,但如何處理我的程序內?我的意思是,如果用戶「打開」文件,我的程序必須用「openFile(String path)」之類的方法通知。如何設置應該調用哪個方法? – Markus 2013-04-23 08:25:41

2

我明白你在問什麼。您想知道如何從OS傳遞給您的應用程序,然後調用您的打開文件方法。

你的java程序有一個類,它有一個被調用來啓動你的應用程序的主要方法。這個類在你的清單文件中被列爲Main-Class:com.your.package.MainClass。該方法的簽名看起來類似:

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

字符串數組ARGS []包含在命令行傳遞給你的程序的任何參數。當您告訴操作系統將文件與可執行文件相關聯,然後雙擊該文件時,操作系統會將文件名(完整路徑)作爲該字符串數組中的第一個參數傳遞給可執行文件。棘手的部分是,你不能只將文件擴展名與你的jar文件關聯,因爲jar文件不是可執行文件。 jar文件實際上與java.exe或javaw.exe相關聯。所以爲了實現這個功能,你需要創建一個調用java.exe或javaw.exe的批處理文件(或者一個取決於你的操作系統的shell腳本),爲你的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 
相關問題