2014-06-11 5 views
10

असल में मेरे पास एक टेक्स्ट फ़ाइल ऑनलाइन यूआरएल/लिंक है और मैं इसे स्थानीय रूप से डाउनलोड करने की कोशिश कर रहा हूं। किसी कारण से, बनाई गई/डाउनलोड की गई टेक्स्ट फ़ाइल खाली है। किसी भी सुझाव के लिए खोलें। धन्यवाद!स्कैला का उपयोग कर इंटरनेट से फ़ाइल को डाउनलोड और सहेजने के लिए कैसे?

def downloadFile(token: String, fileToDownload: String) { 

    val url = new URL("http://randomwebsite.com/docs?t=" + token + "&p=tsr%2F" + fileToDownload) 
    val connection = url.openConnection().asInstanceOf[HttpURLConnection] 
    connection.setRequestMethod("GET") 
    val in: InputStream = connection.getInputStream 
    val fileToDownloadAs = new java.io.File("src/test/resources/testingUpload1.txt") 
    val out: OutputStream = new BufferedOutputStream(new FileOutputStream(fileToDownloadAs)) 
    val byteArray = Stream.continually(in.read).takeWhile(-1 !=).map(_.toByte).toArray 
    out.write(byteArray) 
    } 

उत्तर

4

बफर फ्लश करें और फिर अपनी आउटपुट स्ट्रीम बंद करें।

8

यहाँ scala.io.Source.fromURL द्वारा एक अनुभवहीन कार्यान्वयन और java.io.FileWriter

def downloadFile(token: String, fileToDownload: String) { 
    try { 
    val src = scala.io.Source.fromURL("http://randomwebsite.com/docs?t=" + token + "&p=tsr%2F" + fileToDownload) 
    val out = new java.io.FileWriter("src/test/resources/testingUpload1.txt") 
    out.write(src.mkString) 
    out.close 
    } catch { 
    case e: java.io.IOException => "error occured" 
    } 
} 

आपका कोड मेरे लिए काम करता है ... अन्य संभावनाओं है कि खाली फ़ाइल बनाने हैं।

+1

एक और लिंक का प्रयास किया और यह काम करता है, मुझे लगता है कि यूआरएल के साथ कुछ गलत है। धन्यवाद! – slizorn

+3

लेकिन अगर फ़ाइल बाइनरी प्रारूप में है, तो मुझे लगता है कि 'src.mkString' विफल हो सकता है ... –

19

मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन मैं तो बस ऐसा करने का एक बहुत अच्छा तरीका भर में आया था:

import sys.process._ 
import java.net.URL 
import java.io.File 

def fileDownloader(url: String, filename: String) = { 
    new URL(url) #> new File(filename) !! 
} 

आशा इस मदद करता है। Source

अब आप फ़ाइलों को डाउनलोड करने के लिए फ़ाइलडाउनलोडर फ़ंक्शन का उपयोग कर सकते हैं।

fileDownloader("http://ir.dcs.gla.ac.uk/resources/linguistic_utils/stop_words", "stop-words-en.txt") 
+0

क्या होगा यदि मैं ऊपर दिए गए कोड का उपयोग करना चाहता हूं और इसे स्थानीय रूप से डाउनलोड करने और संग्रहीत करने के बजाय मैं इसे स्टोर करना चाहता हूं एक अलग सर्वर whos मुझे पता है – Aamir

+2

आयात जोड़ने के लिए धन्यवाद! –

+0

@ आमिर इस बात पर निर्भर करता है कि दूसरा सर्वर अपलोड कैसे करता है। उस स्थिति में आप उपर्युक्त उल्लेख विधि काम नहीं करेंगे। –

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

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