2011-11-03 15 views
11

का उपयोग कर पार्सल फ़ाइल डिस्क्रिप्टर से एक इनपुट स्ट्रीम लौटाना मैं एंड्रॉइड डाउनलोड मैनेजर का उपयोग करके फ़ाइल डाउनलोड करने की कोशिश कर रहा हूं, फ़ाइल तक पहुंच सकता हूं, और इसे एक नए स्थान पर लिख सकता हूं (इस उदाहरण में मैं डेटाबेस डाउनलोड कर रहा हूं संकलित सर्वर पक्ष और/डेटाबेस/निर्देशिका में लिखा जाना चाहिए)।एंड्रॉइड डाउनलोड मैनेजर

मैं पढ़ रहा हूं और फ़ाइल डाउनलोड करने में कामयाब रहा हूं, और ब्रॉडकास्ट रिसीवर को सक्रिय करता हूं, लेकिन इस बिंदु पर मैं अटक गया हूं।

मैंने पार्सिलफ़ाइलडिस्क्रिप्ट फ़ाइल वापस कर दी है लेकिन मुझे इसे किसी भी तरह से स्ट्रीम में बदलने में समस्या हो रही है। यदि ParcelFileDecriptor.AutoCloseInputStream एक रेड हेरिंग है या नहीं मैं तय नहीं कर सकते, लेकिन मैं यकीन है कि ParcelFileDecriptor एक धारा को सापेक्षता है हूँ, लेकिन मैं वास्तव में इस पर काम करने के लिए संघर्ष कर रहा हूँ। कोई भी सहायताकाफी प्रशंसनीय होगी।

उत्तर

19

मैंने पोस्टिंग के बाद लगभग 5 मिनटों का काम किया और अब बेवकूफ महसूस किया। वैसे भी, यह सोचते हैं आप डाउनलोड पहले से ही शुरू कर दिया और प्रसारण reciver, निम्नलिखित कोड काम करेगा सेट कर लेते हैं ...

  ParcelFileDescriptor file = dMgr.openDownloadedFile(downloadId); 
      File dbFile = getDatabasePath(Roads.DATABASE_NAME); 

      InputStream fileStream = new FileInputStream(file.getFileDescriptor()); 
      OutputStream newDatabase = new FileOutputStream(dbFile); 

      byte[] buffer = new byte[1024]; 
      int length; 

      while((length = fileStream.read(buffer)) > 0) 
      { 
       newDatabase.write(buffer, 0, length); 
      } 

      newDatabase.flush(); 
      fileStream.close(); 
      newDatabase.close(); 

आप अपने खुद के चेक के साथ एक डेटाबेस को अधिलेखित करने पर अधिक जानकारी के लिए देख रहे हैं इस लिंक (इसके अलावा जहां से ऊपर की जानकारी का सबसे से आ गया है):

http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

+0

आप का उपयोग 'com.google.common.io.ByteStreams.copy (में, बाहर) विचार कर सकते हैं' –

+0

अरे orian, धन्यवाद इनपुट के लिए। मैंने वास्तव में कई सालों से एंड्रॉइड विकास नहीं किया है। bytestreams का उपयोग कर नकल अब एक धारा (जो भावना यह होगा बनाता है), अद्यतन करने के लिए संकोच न करें हिलाने की अधिक पसंदीदा तरीका है/क्रमशः पोस्ट को संपादित। =) – Kennifer

+0

यह Google द्वारा प्रदान की गई एक लाइब्रेरी है, मुझे यह बहुत उपयोगी लगता है। एंड्रॉइड के लिए जटिल ऐप विकसित करते समय मैं इस पर निर्भर करता हूं वैसे भी दूसरों के लिए इसका उल्लेख करना उनके जीवन को आसान बना सकता है। –

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