2011-09-09 14 views
30

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

जैसे ही हम फ़ाइलों को डाउनलोड करने के बाद क्रोम का उपयोग करते हैं, हम फ़ाइल एक्सप्लोरर खोलने और डाउनलोड की गई फ़ाइल को हाइलाइट करने के लिए "फ़ोल्डर में दिखाएं" चुन सकते हैं।

ऐसा करने के लिए जावा डेस्कटॉप एपीआई का उपयोग कैसे करें? या जावा में कोई अन्य एपीआई इस क्रिया को महसूस कर सकती है?

+0

मैंने अपने प्रश्न के हर उत्तर और टिप्पणियां पढ़ीं, लेकिन कोई संतुष्ट उत्तर नहीं है। मैं अपने उत्तर के करीब कुछ जवाब वोट देता हूं, हालांकि वे पूर्ण समाधान नहीं हैं। इसलिए मैंने दूसरों को गलत समझा जाने से रोकने के लिए कोई जवाब स्वीकार नहीं किया। उम्मीद है कि किसी दिन किसी दिन मुझे उन प्रश्नों का पूरा समाधान दे सकता है, और निश्चित रूप से, मैं स्वीकार करूंगा। अंत में, मैं आपको अपनी चर्चाओं में शामिल होने के लिए आमंत्रित करता हूं। शायद आप ही मेरे प्रश्न हल कर सकते हैं। आपके कमेंट के लिए धन्यवाद। –

उत्तर

25

उपयोग: Runtime.getRuntime().exec("explorer.exe /select," + path);

यह भी है अगर वहाँ PATH में एक अंतरिक्ष काम करता है।

+0

हाय @Stone, आपका कोड वास्तव में काम करता है। लेकिन उद्धरण संशोधित किया जाना चाहिए। 'Runtime.getRuntime()। Exec ("explorer। exe/select, path ")' –

+1

@ चार्ल्सव्यू आप वास्तव में दोनों सही हैं। @Stone वेरिएबल 'पथ' को संदर्भित करता है जिसमें संपूर्ण पथ होता है, जबकि आपका बस स्ट्रिंग "पथ" होता है (जो प्रत्येक (?) सिस्टम में अमान्य है, लेकिन यह संकलित करता है)। – bvx89

+0

@Stone मुझे एकाधिक फ़ाइल को हाइलाइट करने की आवश्यकता है .. तो मैं कैसे कर सकता हूं? आपको कोई विचार है? –

27

डेस्कटॉप एपीआई इसका समर्थन नहीं करता है। Explorer.exe को स्पष्ट रूप से with the options you want निष्पादित करने के लिए आपको ProcessBuilder (या वैकल्पिक रूप से Runtime.exec()) का उपयोग करना होगा। यह केवल विंडोज़ पर ही काम करेगा, अगर आप इसे किसी अन्य ओएस पर चलाने के लिए चाहते हैं तो आपको डेस्कटॉप एपीआई का उपयोग करना होगा।

Process p = new ProcessBuilder("explorer.exe", "/select,C:\\directory\\selectedFile").start(); 
+1

जब पथ में एक सफेद स्थान होता है तो यह मेरा घर फ़ोल्डर खोलता है :( – hienbt88

+1

@ hienbt88 आपको अपने कमांड लाइन विकल्पों में रिक्त स्थान से बचना होगा – krock

+2

मैंने 'Runtime.exec() 'का उपयोग किया और यह काम करता है। धन्यवाद। – hienbt88

25

संपादित करें:

आप जावा डेस्कटॉप API के साथ एक विशिष्ट फ़ाइल पर प्रकाश डाला नहीं कर सकते।

डेस्कटॉप एपीआई आप इस स्निपेट का उपयोग करके ऐसा करने के लिए,

File file = new File ("c:\<directory>"); 
Desktop desktop = Desktop.getDesktop(); 
desktop.open(file); 

ऊपर उपयोग कोड के लिए दस्तावेज़ इन कड़ियों पर है, http://docs.oracle.com/javase/7/docs/api/java/awt/Desktop.html और अनुमति देगा:

उत्तर मूल प्रश्न के http://docs.oracle.com/javase/7/docs/api/java/io/File.html

विंडोज कंप्यूटर पर यह डिफ़ॉल्ट फ़ाइल एक्सप्लोरर खोल देगा और अन्य सिस्टम पर यह क्रमशः अपने डिफ़ॉल्ट एक्सप्लोरर खोल देगा।

वैकल्पिक रूप से आप आवश्यक जावा बनाने के लिए नए जावा पथ API का उपयोग कर सकते हैं और उसके बाद उस विधि को आवेक कर सकते हैं जो संबंधित फ़ाइल ऑब्जेक्ट देता है।

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

+0

यह मेरे लिए काम करता है – yonexbat

+0

जब मैंने सवाल पूछा, तो मैं jdk 6 का उपयोग करता हूं। समय के साथ, जावा का नया संस्करण शक्तिशाली है डेवलपर्स। किसी भी तरह से, मेरे प्रश्न का उत्तर देने के लिए धन्यवाद। –

+1

आपका स्वागत है। @ क्रोक का अच्छा जवाब है, लेकिन मैंने सोचा कि मैं प्लेटफॉर्म आजादी की भावना में अपना 2 सेंट जोड़ूंगा। – Zixradoom

1

यह तब भी काम करता है जब फ़ाइल/फ़ोल्डर नाम में शब्दों के बीच एकाधिक रिक्त स्थान होते हैं।

//In this example there are 3 spaces between "GAME" and "OF" and 2 spaces between "OF" and "Thrones" 
    String onlyPath = "D:\\GAME OF Thrones"; 
    String selectPath = "/select," + onlyPath;   

    //START: Strip one SPACE among consecutive spaces 
    LinkedList<String> list = new LinkedList<>(); 
    StringBuilder sb = new StringBuilder(); 
    boolean flag = true; 

    for (int i = 0; i < selectPath.length(); i++) { 
     if (i == 0) { 
      sb.append(selectPath.charAt(i)); 
      continue; 
     } 

     if (selectPath.charAt(i) == ' ' && flag) { 
      list.add(sb.toString()); 
      sb.setLength(0); 
      flag = false; 
      continue; 
     } 

     if (!flag && selectPath.charAt(i) != ' ') { 
      flag = true; 
     } 

     sb.append(selectPath.charAt(i)); 
    } 

    list.add(sb.toString()); 

    list.addFirst("explorer.exe"); 
    //END: Strip one SPACE among consecutive spaces 

    //Output List 
    for (String s : list) { 
     System.out.println("string:"+s); 
    } 
    /*output of above loop 

    string:explorer.exe 
    string:/select,D:\GAME 
    string: OF 
    string: Thrones 

    */ 

    //Open in Explorer and Highlight 
    Process p = new ProcessBuilder(list).start(); 
3

हम साथ कमांड लाइन से एक विशिष्ट पथ खोल सकते हैं:

start C:/ProgramData 

दो तरीके जावा में आप विंडो खोलने के लिए उपयोग कर सकते हैं विशिष्ट पथ के साथ अन्वेषक हैं:

  1. उपयोग प्रक्रिया वर्ग (जैसा कि पहले से ही उत्तर दिया गया है) लेकिन प्रारंभ कमांड

    try { 
        Process builder = Runtime.getRuntime().exec("cmd /c start C:/ProgramData"); 
    } catch (IOException e) { 
        e.printStackTrace(); 
    } 
    
  2. उपयोग डेस्कटॉप वर्ग

    try { 
        Desktop.getDesktop().open(new File("C:/ProgramData")); 
    } catch (IOException e) { 
        e.printStackTrace(); 
    } 
    
+0

मुझे यह समाधान पसंद आया क्योंकि मैं एक्सप्लोरर के बजाय निर्देशिका ओपस का उपयोग करता हूं और स्टार्ट कमांड के साथ आप अपना डिफ़ॉल्ट फ़ाइल प्रबंधक प्राप्त कर सकते हैं और एक्सप्लोरर नहीं !!! – Johntor

+0

@ जोहानोर गाल्ड ने आपकी मदद की .. – Mohit

1

यहाँ से ऊपर की छोटा संस्करण है।

String onlyPath = "D:\\GAME OF Thrones"; 
    String completeCmd = "explorer.exe /select," + onlyPath; 
    new ProcessBuilder(("explorer.exe " + completeCmd).split(" ")).start(); 
0

हमेशा की तरह, के बजाय "/" का "\" का उपयोग अन्यथा केवल एक्सप्लोरर खुल जाएगा, सामने अधिक पढ़ा - Command-line switches that you can use to open the GUI Windows Explorer (Explorer.exe)

विंडोज CLI का उपयोग करना:

C:\Users\Md Arif Mustafa>explorer.exe /select, "C:\Users\Md Arif Mustafa\Music\Aafreen-Himesh.mp3" 

जावा में एक ही स्रोत कोड: यहां परिवर्तनीय फ़ाइलपैथ एक ArrayList<String> है और इसमें सभी फाइल पथ फ़ोल्डर हैं।

try { 
    Process proc = Runtime.getRuntime().exec("explorer.exe /select, " + filePaths.get(i).replaceAll("/", "\\\\")); 
    proc.waitFor(); 
} catch (IOException | InterruptedException ex) { 
    ex.printStackTrace(); 
} 

यह मेरे लिए काम करता है और उम्मीद करता है कि यह आपकी मदद करता है!