जवाबों:
रूबी फ़ाइल वर्ग आप इन और का बहिष्कार दे देंगे ::new
और ::open
लेकिन इसके जनक, आईओ वर्ग , की गहराई में हो जाता है #read
और #write
।
क्या आप निम्नलिखित की तलाश कर रहे हैं?
File.open(yourfile, 'w') { |file| file.write("your text") }
yourfile
एक वैरिएबल होता है जो कि लिखे जाने वाली फ़ाइल का नाम रखता है।
f.write
कोई अपवाद उठाता है तो मैं इस समाधान की अनुशंसा नहीं करूंगा क्योंकि फ़ाइल डिस्क्रिप्टर को खुला छोड़ दिया जाएगा ।
File.write('filename', 'content')
IO.write('filename', 'content')
आप लघु संस्करण का उपयोग कर सकते हैं:
File.write('/path/to/file', 'Some glorious content')
यह लिखी गई लंबाई लौटाता है; देखें :: अधिक विवरण और विकल्पों के लिए लिखें ।
फ़ाइल में संलग्न करने के लिए, यदि यह पहले से मौजूद है, तो उपयोग करें:
File.write('/path/to/file', 'Some glorious content', mode: 'a')
यह ज्यादातर मामलों में पसंदीदा तरीका है:
File.open(yourfile, 'w') { |file| file.write("your text") }
जब एक ब्लॉक को पास किया जाता है File.open
, तो ब्लॉक समाप्त होने पर फ़ाइल ऑब्जेक्ट स्वचालित रूप से बंद हो जाएगा।
यदि आप किसी ब्लॉक को पास नहीं करते हैं File.open
, तो आपको यह सुनिश्चित करना होगा कि फ़ाइल सही ढंग से बंद है और सामग्री फ़ाइल में लिखी गई है।
begin
file = File.open("/tmp/some_file", "w")
file.write("your text")
rescue IOError => e
#some error occur, dir not writable etc.
ensure
file.close unless file.nil?
end
आप इसे प्रलेखन में पा सकते हैं :
static VALUE rb_io_s_open(int argc, VALUE *argv, VALUE klass)
{
VALUE io = rb_class_new_instance(argc, argv, klass);
if (rb_block_given_p()) {
return rb_ensure(rb_yield, io, io_close, io);
}
return io;
}
File.open
ब्लॉग के बारे में कुछ और जानकारी दी गई है ।rubybestpractices.com/posts/rklemme/… यह आधिकारिक दस्तावेज में भी उल्लिखित है
जाम्बरी का यहाँ पाया गया उत्तर सबसे अच्छा है।
File.open("out.txt", '<OPTION>') {|f| f.write("write your stuff here") }
आपके विकल्प कहां <OPTION>
हैं:
r
- सिफ़ पढ़िये। फ़ाइल मौजूद होनी चाहिए।
w
- लिखने के लिए एक खाली फाइल बनाएं।
a
- अगर यह मौजूद नहीं है, तो एक फ़ाइल में संलग्न करें। फ़ाइल बनाई गई है।
r+
- पढ़ने और लिखने दोनों को अपडेट करने के लिए एक फ़ाइल खोलें। फ़ाइल मौजूद होनी चाहिए।
w+
- पढ़ने और लिखने दोनों के लिए एक खाली फाइल बनाएं।
a+
- पढ़ने और संलग्न करने के लिए एक फ़ाइल खोलें। यदि मौजूद नहीं है तो फ़ाइल बनाई जाती है।
आपके मामले में, w
बेहतर है।
हम में से उन लोगों के लिए जो उदाहरण से सीखते हैं ...
फाइल को इस तरह लिखें:
IO.write('/tmp/msg.txt', 'hi')
बोनस जानकारी ...
इसे इस तरह पढ़ें
IO.read('/tmp/msg.txt')
अक्सर, मैं अपने क्लिपबोर्ड में एक फ़ाइल पढ़ना चाहता हूं ***
Clipboard.copy IO.read('/tmp/msg.txt')
और अन्य बार, मैं लिखना चाहता हूं कि मेरे क्लिपबोर्ड में फ़ाइल *** क्या है
IO.write('/tmp/msg.txt', Clipboard.paste)
*** मान लें कि आपके पास क्लिपबोर्ड मणि स्थापित है
IO.write
विकल्प अधिलेखित संलग्न के बजाय फ़ाइल सामग्री। IO.write के साथ आवेदन थोड़ा थकाऊ है।
Errno::ENOENT: No such file or directory @ rb_sysopen
संदेश और फ़ाइल 0 बाइट के आकार के साथ दिखाई दे सकती है ।
फ़ाइल की पिछली सामग्री को नष्ट करने के लिए, फिर फ़ाइल में एक नया स्ट्रिंग लिखें:
open('myfile.txt', 'w') { |f| f << "some text or data structures..." }
अपनी पुरानी सामग्री को अधिलेखित किए बिना किसी फ़ाइल में संलग्न करने के लिए:
open('myfile.txt', "a") { |f| f << 'I am appended string' }