www.lyjust.comRuby文件IO

Sublime ww9992019com 发表于 1 周前

www.lyjust.com开户请拨18288069766姑娘裹被单跑下楼东莞东坑镇9UAZLl<div style="width:100%;float:left;" class="article-content">

                <input type="hidden" name="article_id" id="article_id" value="10260">
                <input type="hidden" name="catid" id="catid" value="0">

                <p>Ruby I/O是与系统交互的一种方式。 数据以字节/字符的形式发送。 <code>IO</code>类是Ruby中所有输入和输出的基础。它可以是双工的,因此可使用多个本机操作系统流。</p>

<p><code>IO</code>类有一个叫作<code>File</code>类的子类,允许在Ruby中读取和写入文件。 这两个类是密切相关的。 <code>IO</code>对象表示对键盘和屏幕的可读/可写交互。</p>

<h2 id="h2-i-o-"><a name="I/O%E7%AB%AF%E5%8F%A3%E4%B8%AD%E7%9A%84%E5%B8%B8%E7%94%A8%E6%A8%A1%E5%BC%8F" class="reference-link"></a><span class="header-link octicon octicon-link"></span>I/O端口中的常用模式</h2><ul>

<li>“<strong>r</strong>”:只读模式,是从文件开始的默认模式。</li><li>“<strong>r+</strong>”:读写模式,从文件开头开始。</li><li>“<strong>w</strong>”:只写模式,创建新文件或截断现有文件进行写入。</li><li>“<strong>w+</strong>”:读写模式,创建一个新文件或截断一个现有文件进行读写。</li><li>“<strong>a</strong>”:只写模式,如果文件存在,它会将文件附加到一个新的文件将被创建为仅写入。</li><li>“<strong>a+</strong>”:读写模式,如果文件存在,它将附加文件,一个新文件将被创建用于写入和读取。</li></ul>

<h2 id="h2-io-"><a name="IO%E6%8E%A7%E5%88%B6%E5%8F%B0" class="reference-link"></a><span class="header-link octicon octicon-link"></span>IO控制台</h2><p><strong>IO</strong>控制台提供了与控制台交互的不同方法。<code>IO</code>类提供以下基本方法:</p>

<ul>

<li><code>IO::console</code></li><li><code>IO#raw#raw!</code></li><li><code>IO#cooked</code></li><li><code>IO#cooked!</code></li><li><code>IO#getch</code></li><li><code>IO#echo=</code></li><li><code>IO#echo?</code></li><li><code>IO#noecho</code></li><li><code>IO#winsize</code></li><li><code>IO#winsize=</code></li><li><code>IO#iflush</code></li><li><code>IO#ioflush</code></li><li><code>IO#oflush</code></li></ul>

<h2 id="h2-ruby-"><a name="Ruby%E6%89%93%E5%BC%80%E6%96%87%E4%BB%B6" class="reference-link"></a><span class="header-link octicon octicon-link"></span>Ruby打开文件</h2><p>可以使用不同的读取,写入或读写方法创建Ruby文件。</p>

<p>在Ruby中打开文件有两种方法:</p>

<ul>

<li><strong>File.new</strong>方法 - 使用这个方法,可以创建一个新的文件用于读取,写入或读写。</li><li><strong>File.open</strong>方法 - 使用这个方法创建一个新的文件对象。该文件对象被分配给一个文件。</li></ul>

<p>两种方法之间的区别是:<code>File.open</code>方法可以与一个块相关联,而<code>File.new</code>方法不能。</p>

<p><strong>语法</strong></p>

<pre><code class="lang-ruby">f = File.new("fileName.rb")

</code></pre>

<p>或者 - </p>

<pre><code class="lang-ruby">File.open("fileName.rb", "mode") do |f|

</code></pre>

<p><strong>创建文件的示例</strong></p>

<p>使用<code>File.open</code>方法在Ruby中创建一个文件,以便从文件读取或写入数据。</p>

<p><strong>步骤1)</strong> 在文件<code>file-create.rb</code>中,编写代码以创建新文件,如下所示。</p>

<pre><code class="lang-ruby">#!/usr/bin/ruby

file : file-create.rb

puts 'Start to create file ...'

File.open('create-first-file.txt', 'w') do |f|

f.puts "This is Yiibai Website"

f.write "You are reading Ruby tutorial.\n"

f &lt;&lt; "Please visit our website.\n"

end

puts 'End create file.'

</code></pre>

<p><strong>步骤2)</strong>在控制台中键入以下命令以创建的文件。</p>

<pre><code class="lang-ruby">F:\worksp\ruby&gt;ruby file-create.rb

Start to create file ...

End create file.

F:\worksp\ruby&gt;

</code></pre>

<p>创建新文件:<em>create-first-file.txt</em>可在代码目录下找到。</p>

<h2 id="h2-ruby-"><a name="Ruby%E8%AF%BB%E5%8F%96%E6%96%87%E4%BB%B6" class="reference-link"></a><span class="header-link octicon octicon-link"></span>Ruby读取文件</h2><p>读取文件有三种不同的方法。要返回一行,使用以下语法。</p>

<p><strong>语法:</strong></p>

<pre><code class="lang-ruby">f.gets

code...

</code></pre>

<p>要在当前位置之后返回整个文件,使用以下语法。</p>

<p><strong>语法</strong></p>

<pre><code class="lang-ruby">f.read

code...

</code></pre>

<p>要以文件行的形式返回文件,使用以下语法。</p>

<p><strong>语法</strong></p>

<pre><code class="lang-ruby">f.readlines

[code...]

</code></pre>

<p><strong>读取文件的示例</strong></p>

<p>使用<code>File.open</code>方法在Ruby中创建一个文件,以便从文件读取或写入数据。</p>

<p><strong>步骤1)</strong>在文件 <em>file-read.rb</em> 中,编写代码以读取已存在的文件,如下所示。</p>

<pre><code class="lang-ruby">#!/usr/bin/ruby

file : file-read.rb

while line = gets

puts line

end

</code></pre>

<p><strong>步骤2)</strong>在控制台中输入以下命令以读取文件。</p>

<pre><code class="lang-shell">F:\worksp\ruby&gt;ruby file-read.rb create-first-file.txt

This is Yiibai Website

You are reading Ruby tutorial.

Please visit our website.

F:\worksp\ruby&gt;

</code></pre>

<p>关于文件:<em>create-first-file.txt</em> 的内容显示在控制台中。</p>

<p><strong>sysread 方法</strong></p>

<p><code>sysread</code>方法也用于读取文件的内容。使用此方法可以以任何模式打开文件。</p>

<p>示例:</p>

<p>在文件:<em>file-sysread.rb</em>中,编写代码以读取已存在的文件,如下所示。</p>

<pre><code class="lang-ruby">#!/usr/bin/ruby

aFile = File.new("create-first-file.txt", "r")

if aFile

content = aFile.sysread(30)

puts content

else

puts "Unable to open file!"

end

</code></pre>

<p>执行上面代码,输出结果如下 - </p>

<pre><code class="lang-shell">F:\worksp\ruby&gt;ruby file-sysread.rb

This is Yiibai Website

You ar

F:\worksp\ruby&gt;

</code></pre>

<p>参数<code>30</code>表示将从文件打印<code>30</code>个字符。</p>

<h2 id="h2-ruby-"><a name="Ruby%E5%86%99%E5%85%A5%E6%96%87%E4%BB%B6" class="reference-link"></a><span class="header-link octicon octicon-link"></span>Ruby写入文件</h2><p>借助于<code>syswrite</code>方法,可以将内容写入文件。 需要在此方法的写入模式下打开文件。</p>

<p>新内容将覆盖已经存在的文件中的旧内容。</p>

<p><strong>示例</strong></p>

<pre><code class="lang-ruby">#!/usr/bin/ruby

file : file-syswrite.rb

aFile = File.new("about.txt", "r+")

if aFile

aFile.syswrite("New content is written in this file.\n Yes, do...while write \n我乱写一片.")

end

puts 'write to file: about.txt success. '

</code></pre>

<p>执行上面代码,得到以下输出结果 - </p>

<pre><code class="lang-ruby">F:\worksp\ruby&gt;ruby file-syswrite.rb

write to file: about.txt success.

F:\worksp\ruby&gt;

</code></pre>

<h2 id="h2-ruby-"><a name="Ruby%E9%87%8D%E5%91%BD%E5%90%8D%E5%92%8C%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6" class="reference-link"></a><span class="header-link octicon octicon-link"></span>Ruby重命名和删除文件</h2><p>使用<code>rename</code>方法重命名Ruby文件,并使用<code>delete</code>方法进行删除。</p>

<p>要重命名文件,使用以下语法。</p>

<pre><code class="lang-ruby">File.rename("olderName", "newName.txt")

``

实例

```ruby

!/usr/bin/ruby

file : file-rename.rb

File.rename("about.txt", "about.new.txt")

puts 'rename file =&gt; about.txt to about.new.txt'

</code></pre>

<p>执行上面代码,得到以下输出结果 - </p>

<pre><code class="lang-ruby">F:\worksp\ruby&gt;ruby file-rename.rb

rename file =&gt; about.txt to about.new.txt

F:\worksp\ruby&gt;

</code></pre>

<p>在上面的输出中,<em>about.txt</em>文件不再存在,因为它的名称已被更改为<em>about.new.txt</em>文件。</p>

<p>要删除文件,使用以下语法。</p>

<pre><code class="lang-ruby">File.delete("filename.txt")

</code></pre>

<p><strong>示例</strong></p>

<pre><code class="lang-ruby">#!/usr/bin/ruby

File.delete("new.txt")

</code></pre>

<p>在上述输出中,<code>new.txt</code>文件不再存在,因为它已被删除。</p>

                <br>
                <p style="text-align:center;float:left;width:100%;margin-top:24px;margin-bottom:18px;">
                        <button class="layui-btn layui-btn-danger" id="btn-reward"> ¥ 我要打赏 </button>  
                        <button class="layui-btn" id="article-perfect">
                            <i class="layui-icon layui-icon-edit"></i>教程纠错
                        </button>
                        <button class="layui-btn layui-btn-normal" id="action-collection">
                            <i class="layui-icon layui-icon-rate"></i>收藏
                        </button>
                </p>



                <div style="width:100%;margin-bottom: 16px; height: 32px;margin-top:18px;float:left;">

                    <span style="float:left;">上一篇:<a href="http://f2e.im/u/ww9992019com" title="Ruby迭代器"><i class="layui-icon"></i>
                            Ruby迭代器</a></span>
                                            <span style="float:right;">下一篇:<a href="http://f2e.im/u/ww9992019com" style="float:right;" title="下一篇:Ruby目录"><i class="layui-icon"></i>
                            Ruby目录</a></span>
                                            <div id="googlead" style="float:left;margin-top:8px;">
                        <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
                        <!-- yiibai下方 -->
                        <ins class="adsbygoogle" style="display:inline-block;width:728px;height:90px" data-ad-client="ca-pub-1090193214637198" data-ad-slot="6494738921"></ins>
                        <script>
                            (adsbygoogle = window.adsbygoogle || []).push({});
                        </script>
                    </div>
                </div>

                <div style="width:100%;margin-top:18px;float:left;">


            </div>
暂无回复,说出你的观点吧
登录后即可参与回复