Rubyでファイルを読み書きする方法(例付き)
今日は、Rubyでファイルを読み書きして、コンテンツを抽出し、新しいファイルを作成し、必要な情報を見つける方法を学びます。
これから説明します :
コンテンツ
- 1Rubyでファイルを読み取る方法
- 2Rubyでファイルに書き込む方法
- 3つのRubyファイルメソッド
- 4つのディレクトリ操作
- 5FileUtilsモジュールの使用方法
- 6まとめ
- 6.1関連
やってみましょう!
Rubyでファイルを読み取る方法
次のようにRubyでファイルを読み取ることができます:
- ファイルを開く 、
open
メソッド。 - ファイルを読む 、ファイル全体、行ごと、または特定のバイト数。
- ファイルを閉じる 、
close
メソッド。
プロセスの詳細は次のとおりです。
File
を使用する ファイルを開くクラス:
file = File.open("users.txt")
その結果、File
を取得します オブジェクトですが、ファイルの内容はまだありません。
今 :
ファイルの内容は3つの方法で読み取ることができます。
まず、ファイル全体を読み取ることができます。
このように :
file_data = file.read # "user1\nuser2\nuser3\n"
複数行のファイルを使用している場合は、split
のいずれかを実行できます。 file_data
、またはreadlines
を使用します メソッドとchomp
改行文字を削除するメソッド。
例 :
file_data = file.readlines.map(&:chomp) # ["user1", "user2", "user3"]
close
したいファイルの操作が終わったら メモリとシステムリソースを解放します。
このように :
file.close
ファイルを開いたり閉じたりする代わりに 、File.read
を使用できます 方法:
file_data = File.read("user.txt").split # ["user1", "user2", "user3"]
ファイルの読み取りに関するもう1つのヒント。
一度に1行ずつファイルを処理する場合は、foreach
を使用できます。 メソッド。
例 :
File.foreach("users.txt") { |line| puts line }
ファイル全体をメモリに読み込むのではなく 一度に1行ずつファイルを処理できるため、大きなファイルに役立ちます。
Rubyでファイルに書き込む方法
Rubyを使用してファイルに書き込みたい場合:
- ファイルを書き込みモードで開きます(「w」フラグ)
-
write
を使用します ファイルにデータを追加する方法 - ブロックバージョンを使用しなかった場合は、
close
を忘れないでください
例 :
File.open("log.txt", "w") { |f| f.write "#{Time.now} - User logged in\n" }
重要 :
これにより、以前のファイルの内容が書き換えられます!
ファイルに新しいコンテンツを追加する場合は、「w」(書き込み)フラグの代わりに「a」(追加)フラグを使用します。
ショートカットの1つは、File.write
を使用することです。 :
File.write("log.txt", "data...")
このメソッドを追加モードで使用するには :
File.write("log.txt", "data...", mode: "a")
これは、Rubyで1行のコードでファイルに書き込む最も簡単な方法です🙂
もう1つ…
配列をファイルに書き込みたい場合は、最初にそれを文字列に変換する必要があります。
方法は次のとおりです :
File.write("log.txt", [1,2,3].join("\n"), mode: "a")
オブジェクトを文字列に変換するこのプロセスは、シリアル化と呼ばれます。
Rubyファイルメソッド
ファイルの読み取りと書き込み以外に、ファイルを使用して他のことを行うことができます。
たとえば、ファイルが存在するかどうかを知りたい場合があります または、現在のディレクトリのファイルのリストを取得します。
次のような方法を使用します :
- 名前の変更
- サイズ
- 存在しますか?
- extname
- ベース名
- dirname
- ディレクトリ?
- ファイル?
いくつかの例を見てみましょう :
# Renaming a file File.rename("old-name.txt", "new-name.txt") # File size in bytes File.size("users.txt") # Does this file already exist? File.exists?("log.txt") # Get the file extension, this works even if the file doesn't exists File.extname("users.txt") # => ".txt" # Get the file name without the directory part File.basename("/tmp/ebook.pdf") # => "ebook.pdf" # Get the path for this file, without the file name File.dirname("/tmp/ebook.pdf") # => "/tmp" # Is this actually a file or a directory? File.directory?("cats")
最後の例は、ディレクトリリストの内容をループしている場合に意味があります。
def find_files_in_current_directory entries = Dir.entries(".") entries.reject { |entry| File.directory?(entry) } end
ファイルサイズ、権限、作成日など、ファイルの統計情報を取得することもできます。
File.stat("/tmp")
ディレクトリ操作
Dir.globの使用 特定のパターンに一致するすべてのファイルのリストを取得できます。
次にいくつかの例を示します。
# All files in current directory Dir.glob("*") # All files containing "spec" in the name Dir.glob("*spec*") # All ruby files Dir.glob("*.rb")
この1行のコードは、現在のディレクトリから始めて、Ruby内のすべてのファイルを再帰的に一覧表示します。 :
Dir.glob("**/**")
ディレクトリのみを検索する場合は、これを使用します:
Dir.glob("**/**/")
Dirクラスを使用して、現在の作業ディレクトリを印刷することもできます。 :
Dir.pwd
ディレクトリが空かどうかを確認します:
Dir.empty?("/tmp") # false
ディレクトリが存在するかどうかを確認します:
Dir.exists?("/home/jesus") # true
新しいディレクトリを作成します:
Dir.mkdir("/tmp/testing")
mktmpdirを使用して一時ディレクトリを作成します:
Dir.mktmpdir do |dir| File.write(dir + "/log.txt", "test") end
FileUtilsモジュールの使用方法
FileUtilsモジュール内でアクセスできる追加のファイル処理ユーティリティがいくつかあります。
たとえば、ファイルを比較できます 、ファイルをタッチします(最終アクセスと変更時刻を更新する )、または cp_rを使用してファイルとディレクトリをコピーします 。
このように :
require 'fileutils' FileUtils.compare_file("a.txt", "b.txt") FileUtils.touch("/tmp/lock") FileUtils.cp_r("data", "backup")
ところで、cp_r
の「r」 「再帰的」の略です。
概要
File.read
などの組み込みメソッドを使用して、Rubyでファイルとフォルダーを管理する方法を学習しました。 &File.write
。
読んでくれてありがとう!
-
Ruby Mapメソッドの使用方法(例付き)
Mapは、配列、ハッシュ、範囲で使用できるRubyメソッドです。 マップの主な用途は、データを変換することです。 例 : 文字列の配列が与えられた場合、すべての文字列に目を通し、すべての文字を大文字にすることができます。 または、Userのリストがある場合 オブジェクト… 変換できます 対応するメールアドレス、電話番号、またはその他の属性のリストにそれらを追加します Userで定義 クラス。 これを行う方法を正確に見てみましょう! ルビーマップ構文 マップの構文は次のようになります: array = [a, b, c] array.map { |string| string.
-
Windows 10 でメモリ ダンプ ファイルを読み取る方法
PC が最近クラッシュした場合は、ブルー スクリーン オブ デス (BSOD) に直面したに違いありません。ブルー スクリーン オブ デス (BSOD) には、クラッシュの原因がリストされ、PC が突然シャットダウンします。現在、BSOD 画面は数秒間しか表示されておらず、その時点でクラッシュの原因を分析することはできません。ありがたいことに、Windows がクラッシュすると、クラッシュ ダンプ ファイル (.dmp) またはメモリ ダンプが作成され、Windows のシャットダウン直前にクラッシュに関する情報が保存されます。 BSOD 画面が表示されるとすぐに、Windows はクラ