2013-05-17 6 views
8

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

public class Main { 
    public static void main(String[] args) { 
     try { 
     FileSaveService fos = (FileSaveService) ServiceManager.lookup("javax.jnlp.FileSaveService"); 
     //open Dialog 
     FileContents fc = fos.saveFileDialog("c:/data", null, new ByteArrayInputStream("Hallo Welt".getBytes()), "name.txt"); 
     System.out.println("FileContents: " + fc); 
     } catch (UnavailableServiceException e) { 
     System.err.println("***" + e + "***"); 
     } catch (IOException e) { 
     System.err.println("***" + e + "***"); 
     } 
     //wait a minute 
     try { 
     Thread.sleep(10000); 
     } catch (InterruptedException e) { 
     } 
     System.exit(0); 
    } 
} 

सब कुछ सिवाय इसके कि संवाद है कि एक "खुला" फ़ाइल संवाद की तरह दिखता है ऊपर आता है, एक "बचाने" फ़ाइल संवाद पसंद नहीं काम करता है:

FileDialog

किसी भी मदद की सराहना की जाएगी।

+0

आप यहां दिखाए गए लोगों के लिए अपने 'fss.saveFileDialog() 'पैरामीटर की तुलना कर सकते हैं [http://docs.oracle.com/javase/6/docs/technotes/guides/javaws/developersguide/examples। एचटीएमएल # FileSaveService)। – trashgod

+1

मैंने अभी 1.7.0_21-b11 (विंडोज 32 बिट) में [फ़ाइल सेवा डेमो] (http://pscode.org/jws/api.html#fs) की कोशिश की और खुले और सहेजे गए संवाद अपेक्षित के रूप में दिखाई दिए। जेआरई क्या बनाते हैं और मॉडल क्या चल रहे हैं? –

+0

हम जेआरई संस्करण 1.6.0_31-बी05 जावा हॉटस्पॉट (टीएम) 64-बिट सर्वर वीएम – keuleJ

उत्तर

1

फ़ाइल-ओपन-संवाद आवश्यक है। आपको सबसे पहले उपयोगकर्ता को डेटा को सहेजने का विकल्प चुनने की आवश्यकता है। इस प्रकार एक jnlp-application के लिएFileDialog को खोलने के लिए एक अंतिम कॉल पूर्ण आवश्यक है। आपको सीधे एक विशिष्ट स्थान पर सहेजने की अनुमति नहीं है जैसे सी:

यदि आप उल्लिखित लिंक (http://docs.oracle.com/javase/6/docs/technotes/guides/javaws/developersguide/examples.html#FileSaveService) का पालन करते हैं तो आपको सफल होना चाहिए।

संपादित करें: स्पष्टीकरण के लिए। javax.jnlp.FileSaveService के माध्यम से सहेजने के लिए बिल्कुल एक कॉल की आवश्यकता है। उदाहरण saveFileDialog() इस तरह बुला लिए पर्याप्त होना चाहिए के लिए:

fss.saveFileDialog(null, null, new ByteArrayInputStream("Hallo Welt".getBytes() ), "newFileName.txt"); 

एक उपयोगकर्ता-वार्ता की आवश्यकता jnlp की anonymizing प्रकृति, जहां आपके आवेदन उपयोगकर्ता के फाइल सिस्टम के बारे में कोई संकेत नहीं मिलना चाहिए की वजह से है। हालांकि, मुझे यह मानना ​​है कि यह आपका प्रश्न नहीं था।

आपकी मुख्य समस्या जावा सहेजने से हर समय "सहेजने-संवाद" के बजाय "खुले संवाद" पेश करती है।

ऐसा नहीं होना चाहिए! अगर मैं नम्रतापूर्वक अपने स्निपेट से मान सकता हूं जहां आप fos.saveFileDialog पर कॉल करते हैं: क्या आपने FileSaveService के बजाय FileOpenService द्वारा fos प्रारंभ किया था?

FileSaveService पर अधिक जानकारी यहां पाया जा सकता: http://docs.oracle.com/javase/7/docs/jre/api/javaws/jnlp/javax/jnlp/FileSaveService.html

+0

जब मैं लिंक में उदाहरण में कोड चलाता हूं, तो मुझे 3 बार खुले संवाद दिखाई देते हैं। तुमने क्या देखा? – keuleJ

संबंधित मुद्दे