से एक आईओ स्ट्रीम खोलें मुझे पता है कि अन्य भाषाओं में libs हैं जो एक स्ट्रिंग ले सकते हैं जिसमें स्थानीय फ़ाइल या यूआरएल का पथ हो और इसे एक पठनीय आईओ स्ट्रीम के रूप में खोलें।स्थानीय फ़ाइल या यूआरएल
क्या रूबी में ऐसा करने का कोई आसान तरीका है?
से एक आईओ स्ट्रीम खोलें मुझे पता है कि अन्य भाषाओं में libs हैं जो एक स्ट्रिंग ले सकते हैं जिसमें स्थानीय फ़ाइल या यूआरएल का पथ हो और इसे एक पठनीय आईओ स्ट्रीम के रूप में खोलें।स्थानीय फ़ाइल या यूआरएल
क्या रूबी में ऐसा करने का कोई आसान तरीका है?
open-uri मानक रूबी लाइब्रेरी का हिस्सा है, और यह open
के व्यवहार को फिर से परिभाषित करेगा ताकि आप एक यूआरएल, साथ ही एक स्थानीय फ़ाइल खोल सकें। यह File
ऑब्जेक्ट देता है, इसलिए आपको read
और readlines
जैसी विधियों को कॉल करने में सक्षम होना चाहिए।
require 'open-uri'
file_contents = open('local-file.txt') { |f| f.read }
web_contents = open('http://www.stackoverflow.com') {|f| f.read }
यूआरएल के लिए, आप अपने दस्तावेज़ से rest-client, चाहते हो सकता है
आप किसी फ़ाइल के जवाब से डेटा स्ट्रीम करने के लिए के रूप में यह आता है, बल्कि पूरी तरह से स्मृति में से चाहते हैं, आप भी कर सकते हैं पास क्लाइंट :: Request.execute पैरामीटर: block_response जिस पर आप ब्लॉक/proc पास करते हैं। इस ब्लॉक को नेट :: HTTP से कच्चे अनमोडिफाइड नेट :: HTTPResponse ऑब्जेक्ट प्राप्त होता है, जिसका उपयोग आप प्रत्येक फ़ाइल के रूप में सीधे फ़ाइल में स्ट्रीम करने के लिए कर सकते हैं मिला है।
File.open('/some/output/file', 'w') {|f|
block = proc { |response|
response.read_body do |chunk|
f.write chunk
end
}
RestClient::Request.execute(method: :get,
url: 'http://example.com/some/really/big/file.img',
block_response: block)
}
@ यह सिर्फ मेरा दिन बना। धन्यवाद! – AnApprentice
क्या कोई फ़ाइल ऑब्जेक्ट वापस करने का कोई तरीका है जैसा आपने यहां एक्शनमेलर अटैचमेंट से किया था? – AnApprentice
वह 'उत्कृष्ट - धन्यवाद। –