2010-08-15 14 views
7

मैं अपने जावा प्रोग्राम में नोटपैड खोलना चाहता हूं। मान लीजिए कि मेरे पास एक बटन है यदि मैं इस बटन पर क्लिक करता हूं तो नोटपैड दिखाई देगा। मेरे पास पहले से ही एक फ़ाइल नाम और एक निर्देशिका है।जावा में नोटपैड फ़ाइल कैसे खोलें?

मैं इस मामले को कैसे कार्यान्वित कर सकता हूं?

+3

'नोटपैड' से आपका क्या मतलब है? विंडोज़, या टेक्स्ट एरिया नियंत्रण पर इस्तेमाल किया जाने वाला एक क्रैपी टेक्स्ट एडिटिंग प्रोग्राम?मुझे "चीजें" मानने के लिए क्षमा करें, लेकिन ऐसा लगता है जैसे आप स्विंग/एडब्ल्यूटी की मूल बातें नहीं जानते हैं। – aviraldg

+1

... आप नोटपैड प्रोग्राम, या कि आप नोटपैड में बनाए गए एक पाठ फ़ाइल को खोलने के लिए करना चाहते हैं? – Stephen

उत्तर

6

मान लें कि आप विंडोज प्रोग्राम notepad.exe लॉन्च करना चाहते हैं, तो आप exec फ़ंक्शन ढूंढ रहे हैं। ,

Runtime runtime = Runtime.getRuntime(); 
Process process = runtime.exec("C:\\path\\to\\notepad.exe C:\\path\\to\\file.txt"); 

उदाहरण के लिए पर मेरे मशीन नोटपैड C:\Windows\notepad.exe पर स्थित है:: आप शायद की तरह कुछ कॉल करना चाहते हैं

Runtime runtime = Runtime.getRuntime(); 
Process process = runtime.exec("C:\\Windows\\notepad.exe C:\\test.txt"); 

इस फ़ाइल test.txt संपादन के लिए खोलने के साथ नोटपैड खुल जाएगा।

नोट आप exec पर एक तीसरा पैरामीटर भी निर्दिष्ट कर सकते हैं जो कि निष्पादित करने के लिए कार्यशील निर्देशिका है - इसलिए, आप एक प्रोग्राम फ़ाइल लॉन्च कर सकते हैं जो आपके प्रोग्राम की कार्य निर्देशिका से संबंधित है।

2

SWT का उपयोग करके, आप लॉन्च कर सकते हैं यदि आप विंडोज़ में किसी टेक्स्ट पर डबल-क्लिक करना चाहते हैं, तो यह केवल सादे जेआरई के साथ संभव नहीं है। आप SWT की तरह एक देशी पुस्तकालय का उपयोग करें और एक फ़ाइल खोलने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं:

org.eclipse.swt.program.Program.launch("c:\path\to\file.txt") 

आप एक तीसरे पक्ष के lib का उपयोग नहीं करना चाहते हैं, तो आपको पता होना चाहिए और आपको पता है जहां notepad.exe है (या यह पथ में दृश्यमान हो):

runtime.exec("notepad.exe c:\path\to\file.txt"); 

अपाचे common-exec बाहरी प्रक्रिया निष्पादन से निपटने के लिए एक अच्छा पुस्तकालय है।

अद्यतन: अपने प्रश्न के एक और पूरा जवाब पाया जा सकता है here

20

if (Desktop.isDesktopSupported()) { 
    Desktop.getDesktop().edit(file); 
} else { 
    // dunno, up to you to handle this 
} 

यकीन है कि फ़ाइल मौजूद है की कोशिश करो। एंड्रियास_D के लिए धन्यवाद जिन्होंने इसे इंगित किया।

+0

आप काम के लिए जावा के आवश्यक संस्करण के बारे में विवरण जोड़ना चाह सकते हैं। –

+1

अरे, उसे नहीं पता था। ठंडा। लेकिन - दूसरी पंक्ति को 'डेस्कटॉप.getDesktop() संपादित करना है। (संपादित करें);'। और फ़ाइल को बनाया जाना है, अन्यथा यह 'अवैध अवैधकरण 'के साथ शिकायत करेगा। –

+0

धन्यवाद @ एंड्रियास, इसे ठीक किया गया। यह सुनिश्चित करना कि फ़ाइल मौजूद है guilgamos 'job का हिस्सा है :) वैसे भी अच्छा पकड़, +1 – whiskeysierra

2

आईडीई (ग्रहण) में यह "सी: \ path \ to \ notepad.exe सी: \ path \ to \ file.txt" के बारे में बताता है। इसलिए मैंने निम्नलिखित और मेरे आईडीई को खुश रखने के लिए निम्नलिखित काम किया है: ओ) उम्मीद है कि यह दूसरों को वहां मदद करेगा।

String fpath; 
fPath =System.getProperty("java.io.tmpdir")+"filename1" +getDateTime()+".txt"; 
//SA - Below launches the generated file, via explorer then delete the file "fPath" 
     try { 
     Runtime runtime = Runtime.getRuntime();   
     Process process = runtime.exec("explorer " + fPath); 

Thread.sleep(500); //lets give the OS some time to open the file before deleting 

    boolean success = (new File(fPath)).delete(); 
    if (!success) { 
     System.out.println("failed to delete file :"+fPath); 
     // Deletion failed 
    } 

} catch (InterruptedException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
10

(यह मानते हुए कि आप नोटपैड चाहते हैं "myfile.txt" खोलने के लिए :)

ProcessBuilder pb = new ProcessBuilder("Notepad.exe", "myfile.txt"); 
pb.start(); 
2
String fileName = "C:\\Users\\Riyasam\\Documents\\NetBeansProjects\\Student Project\\src\\studentproject\\resources\\RealWorld.chm"; 
     String[] commands = {"cmd", "/c", fileName}; 
     try { 
      Runtime.getRuntime().exec(commands); 
//Runtime.getRuntime().exec("C:\\Users\\Riyasam\\Documents\\NetBeansProjects\\SwingTest\\src\\Test\\RealWorld.chm"); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
0

अगर आप कमांड के साथ कमांड लाइन में नोटपैड शुरू आप इस सबसे अच्छा कर सकता है: नोटपैड

शुरू
String[] startNotePadWithoutAdminPermissions = new String[] {"CMD.EXE", "/C", "start" "notepad" }; 

स्ट्रिंग आदेशों की सरणी सहेजें और कार्यकारी में parametr की तरह इसे देने

Process runtimeProcess = Runtime.getRuntime().exec(startNotepadAdmin2); 
runtimeProcess.waitFor(); 
संबंधित मुद्दे