রুবিতে কীভাবে ফাইল তৈরি করবেন


169

আমি একটি নতুন ফাইল তৈরি করার চেষ্টা করছি এবং জিনিসগুলিও তাদের প্রত্যাশা মতো কাজ করছে বলে মনে হচ্ছে না। এখানে আমি চেষ্টা করেছি:

File.new "out.txt"
File.open "out.txt"
File.new "out.txt","w"
File.open "out.txt","w"

আমি অনলাইনে পড়া সমস্ত কিছু অনুসারে এই সকলের কাজ করা উচিত তবে তাদের প্রত্যেকটিই আমাকে এটি দেয়:

ERRNO::ENOENT: No such file or directory - out.txt

এটি আইআরবি পাশাপাশি একটি রুবি স্ক্রিপ্ট থেকে ঘটে। আমি কী মিস করছি?


13
প্রথম দুটি কাজ করা উচিত নয়, তবে দ্বিতীয় দুটি সমার্থক এবং অবশ্যই কাজ করা উচিত।
অ্যান্ড্রু মার্শাল

@ অ্যান্ড্রু: আপনি কি ভাবছেন যে কেবল প্রথম দু'জনেরই চেষ্টা করা হয়েছিল?
মিউ খুব ছোট

1
@ মিমিস্টোশর্ট এটাই আমি পৌঁছাতে পারছি। একটি অনুমতি ত্রুটি নিক্ষেপ করা হবে Errno::EACCES, না ENOENT
অ্যান্ড্রু মার্শাল

2
ঠিক আছে, এখন আমি বোকা বোধ করছি। প্রথম দুটি অবশ্যই কাজ করে না তবে দ্বিতীয় দুটি কাজ করে। নিশ্চিত না যে আমি কীভাবে আমার আত্মকে বুঝিয়েছি যে আমি তাদের চেষ্টা করেছি। সবার সময় নষ্ট করার জন্য দুঃখিত
সিভেট্রিক্স

1
@ সিভেট্রিক্স এটি কোনও সমস্যা নয়। আমরা সকলেই মাঝে মাঝে সময় নষ্ট করি।
দার্ট এগারিজিয়াস

উত্তর:


433

ব্যবহার করুন:

File.open("out.txt", [your-option-string]) {|f| f.write("write your stuff here") }

আপনার বিকল্পগুলি যেখানে:

  • r- শুধুমাত্র পাঠযোগ্য. ফাইল উপস্থিত থাকতে হবে।
  • w - লেখার জন্য একটি ফাঁকা ফাইল তৈরি করুন।
  • a - একটি ফাইলে সংযোজন করুন The ফাইলটি উপস্থিত না থাকলে তৈরি হয়।
  • r+- উভয়ই পড়া এবং লেখার আপডেটের জন্য একটি ফাইল খুলুন। ফাইল উপস্থিত থাকতে হবে।
  • w+ - উভয় পড়া এবং লেখার জন্য একটি খালি ফাইল তৈরি করুন।
  • a+- পড়া এবং সংযোজন জন্য একটি ফাইল খুলুন। ফাইলটি উপস্থিত না থাকলে তৈরি করা হয়।

আপনার ক্ষেত্রে, 'w'ভাল।

অথবা আপনি থাকতে পারেন:

out_file = File.new("out.txt", "w")
#...
out_file.puts("write your stuff here")
#...
out_file.close

11
দুর্দান্ত উত্তর রুবি কনভ্যানশন হ'ল ভার নামের জন্য সাপের কেস। সবেমাত্র নতুনদের জন্য মাথা তুলে। outFileমত চেহারা উচিত out_file
অ্যাডাম ওয়েট

3
@ অ্যাডামওয়েট আমি আপনার সাপ_কেস পরামর্শ অনুসারে উত্তরটি সম্পাদনা করেছি, প্রবন্ধের জন্য এই মন্তব্যটি রেখেছি।
ক্রিস

3
@ আজানব্রি - আমি ফাইলটি বন্ধ না করলে কী হবে?
এরান মোরাড

1
দুর্দান্ত উত্তর, বিস্তৃত এবং সংক্ষিপ্ত
বোরিস

2
@ বোরাটসাগদিয়েভ "একটি ফাইল অবজেক্ট যা আর উল্লেখ করা হয়নি তা আবর্জনা সংগ্রহের জন্য যোগ্য হয়ে ওঠে the rootr.net/rubyfaq-9.html
জেকেদেব

35

চেষ্টা

File.open("out.txt", "w") do |f|     
  f.write(data_you_want_to_write)   
end

ব্যবহার না করে

File.new "out.txt"

25

ন্যায়বিচারের "w+"পরিবর্তে রাইট মোড হিসাবে ব্যবহার করার চেষ্টা করুন "w":

File.open("out.txt", "w+") { |file| file.write("boo!") }

4
নির্ভর করে যদি আপনি কেবল ( w) অথবা উভয়ই লিখতে এবং লিখতে চান ( w+)।
জেকদেব

20

ঠিক আছে, এখন আমি বোকা বোধ করছি। প্রথম দুটি অবশ্যই কাজ করে না তবে দ্বিতীয় দুটি কাজ করে। নিশ্চিত না যে আমি কীভাবে আমার আত্মকে বুঝিয়েছি যে আমি তাদের চেষ্টা করেছি। সবার সময় নষ্ট করার জন্য দুঃখিত

যদি এটি অন্য কাউকে সহায়তা করে তবে আপনি যখন অস্তিত্বহীন কোনও ডিরেক্টরিতে একটি নতুন ফাইল তৈরি করার চেষ্টা করছেন তখন এটি ঘটতে পারে।


11

ডিরেক্টরিটি বিদ্যমান নেই। নিশ্চিত হয়ে নিন যে এটি openআপনার জন্য সেই ডায়ার তৈরি করবে না as

আমি নিজেকে এই মধ্যে দৌড়ে কিছুক্ষণ আগে।


11

File.newএবং File.open(মোড পড়তে ডিফল্ট 'r') একটি নিরাপত্তা প্রক্রিয়া হিসেবে, সম্ভবত একটি ফাইল মুছে যাওয়ার এড়ানো। আমরা রুবিকে স্পষ্টভাবে বলতে হবে রাইট মোড ( 'w'সর্বাধিক সাধারণ উপায়) ব্যবহার করতে যদি আমরা ফাইলে আউটপুট যাচ্ছি।

আউটপুট হওয়ার পাঠ্যটি যদি লেখার চেয়ে স্ট্রিং হয় তবে:

File.open('foo.txt', 'w') { |fo| fo.puts "bar" }

বা তার থেকেও খারাপ:

fo = File.open('foo.txt', 'w')
fo.puts "bar"
fo.close

আরও সাফল্য ব্যবহার করুন write:

File.write('foo.txt', 'bar')

writeমোড অনুমতি দেওয়া হয়েছে তাই আমরা ব্যবহার করতে পারেন 'w', 'a', 'r+'যদি প্রয়োজন হয় তাহলে।

openযদি আপনাকে পুনরাবৃত্ত লুপের আউটপুট গণনা করতে হয় এবং ফাইলটি উন্মুক্ত রেখে দিতে চান তবে একটি ব্লক সহ কার্যকর। writeআপনি যদি একটি বিস্ফোরণে সামগ্রী আউটপুট করতে যাচ্ছেন তবে দরকারী is

আরও তথ্যের জন্য ডকুমেন্টেশন দেখুন ।


দুর্দান্ত প্রতিক্রিয়া, এটি সর্বাধিক প্রজ্ঞাবান এবং এইভাবে "রুবিবাদী" উপায়। শীর্ষ উত্তর হওয়া উচিত।
Gino

ঠিক আছে, আমি একমত। আমি ফাইল লিখতে ব্লক ফর্মটি খুব কমই ব্যবহার করি। এটি খুব চাক্ষুষ-শোরগোল।
টিন ম্যান

11

যদি উদ্দেশ্যটি কেবল একটি ফাইল তৈরি করা হয় তবে আমি দেখতে সবচেয়ে সরাসরি উপায় হ'ল:

 FileUtils.touch "foobar.txt"

1
data = 'data you want inside the file'.

তুমি ব্যবহার করতে পার File.write('name of file here', data)


0

আপনি চাইলে মোডটি নির্দিষ্ট করতে স্ট্রিংয়ের পরিবর্তে ধ্রুবক ব্যবহার করতে পারেন। সুবিধাটি হ'ল যদি আপনি একটি ধ্রুবক নামে টাইপো করেন তবে আপনার প্রোগ্রামটি রানটাইম ব্যতিক্রম বাড়িয়ে তুলবে।

ধ্রুবক হয় File::RDONLYবা File::WRONLYবা File::CREAT। আপনি চাইলে এগুলিও সংযুক্ত করতে পারেন।

রুবি -ডোক.আর.গিতে ফাইল উন্মুক্ত মোডের সম্পূর্ণ বিবরণ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.