美文网首页
Ruby 文件/文本操作

Ruby 文件/文本操作

作者: changsanjiang | 来源:发表于2017-09-26 11:41 被阅读476次
    #!/usr/bin/ruby
    # -*- coding: UTF-8 -*-
    
    # 文件的输入与输出
        # => Ruby 提供了一整套 I/O 相关的方法, 在内核模块中实现. 
        # => 所有的 I/O 方法派生子 IO 类.
        # => 类 I/O 提供了所有基础的方法, 比如 read、write、gets、puts、readline、getc 和 printf.
    
    # => puts 语句
        # => puts 语句指示程序显示存储在变量中的值, 并在每行末尾添加一个新行.
    str1 = 'Hello Ruby'
    str2 = 'Hello World'
    puts str1, str2
    
    # => gets 语句
        # => gets 语句可用于获取来自名称 STDIN 的标准屏幕的用户输入. 
    # puts "Enter your name: "
    # name = gets
    # puts "Your name is #{name}."
    
    
    # => putc 语句
        # => 与 puts 语句不同, puts 语句输出整个字符串到屏幕上, 而 putc 语句可用于依次输出一个字符.
    putc str1
    
    puts
    
    
    # => print 语句
        # => print 语句与 puts 语句类似. 唯一的不同在于 puts 语句在输出内容后会跳到下一行. 而print不会.
    print str1
    print "----"
    print str2
    
    puts
    
    # 操作实际的数据文件.
    
    # => 打开文件的不同 mode
    # => 模式 描述
    # =>  r     只读模式. 文件指针被放置在文件的开头. 这是默认模式. 输入会直接覆盖原有内容.
    # =>  r+    读写模式. 文件指针被放置在文件的开头. 输入会直接覆盖原有内容
    # =>  w     只写模式. 如果文件存在, 则重写(清除内容)文件. 如果文件不存在, 则创建一个新文件用于写入.    
    # =>  w+    读写模式. 如果文件存在, 则重写(清除内容)文件. 如果文件不存在, 则创建一个新文件用于读写.
    # =>  a     只写模式. 如果文件存在, 则文件指针被放置在文件的末尾. 也就是说, 这是追加模式. 如果文件不存在, 则创建一个新文件用于写入. 
    # =>  a+    读写模式. 如果文件存在, 则文件指针被放置在文件的末尾. 也就是说, 这是追加模式. 如果文件不存在, 则创建一个新文件用于读写.
    
    
    # => File.new
        # => 使用 File.new 方法创建一个 File 对象用于读取、 写入或者读写, 读写权限取决于 mode 参数.
        # => 使用 File.close 来关闭文件.
    #aFile = File.new("/Users/SanJiang/Desktop/rubyFile.rb", "a")
        # ... 处理文件
    #aFile.close
    
    # => File.open
        # => 使用 File.open 方法创建一个新的 File 对象, 并把该 File 对象赋值给文件. 
        # => File.open 和 File.new 方法之间有一点不同, File.open 方法可与块关联, 而 File.new 方法不能.
    #File.open("/Users/SanJiang/Desktop/rubyFile.rb", "w") do |aFile|
        # ... 处理文件
    #end
    
    
    
    # 读取和写入文件
        # => 用于简单的 I/O 的 method 也可用于所有 file 对象. 
        # => gets 从标准输入读取一行, 而 aFile.gets 就是从文件对象 aFile 读取一行. 
        # => 但是 I/O 对象提供了访问方法的附加设置, 为我们提供了便利. 
    
    # => sysread 方法
    #aFile = File.new("rubyFile.rb", "r")
    #if aFile
        # => 该语句将读取输入文件的 20 个字符. 文件指针将被放置在文件中第 21 个字符的位置.
    #   content = aFile.sysread(20)
    #   puts content
    #   content = aFile.sysread(20)
    #   puts content
    #else
    #   puts "Unable to open file!"
    #end
    
    #aFile.close
    
    # => syswrite 方法
    #aFile = File.new("rubyFile.rb", "r+")
    #if aFile
    #   aFile.syswrite("Add Add Add Add")
    #else
    #   puts "Unable to open file!"
    #end
    
    #aFile.rewind
    #content = aFile.sysread(50)
    #puts content
    
    #aFile.close
    
    
    
    # each_byte 方法
        # => 该方法属于类 File. 方法 each_byte 可以迭代字符串中每个字符. 
    
    #aFile = File.new("rubyFile.rb", "r+")
    #if aFile
        #aFile.syswrite("add add add ")
        #aFile.rewind
        #aFile.each_byte{|ch| putc ch; putc ?.}
    #else
        #puts "Unable to open file"
    #end
    
    #aFile.rewind
    #puts aFile.sysread(50)
    #aFile.close
    
    # IO.readlines 方法
        # => 类 File 是类 IO 的一个子类. 类 IO 也有一些用于操作文件的方法.
        # => IO.readlines 是 IO 类中的一个方法. 该方法逐行返回文件的内容.
    #arr = IO.readlines("rubyFile.rb")
        # 文件中的每一行将是数组 arr 的一个元素. 
    #puts arr[0]
    #puts arr[1]
    #puts 
    #puts arr
    
    # IO.foreach 方法
        # => 该方法也逐行返回输出. 
        # => 与 readlines 不同的是: foreach 与块相关联. 
        # => 但是, 不返回数组. 
    #IO.foreach("rubyFile.rb"){|content| puts content}
    
    # 重命名和删除文件
        # => 通过 rename 和 delete 方法来重命名和删除文件
    #File.rename("rubyFile.rb", "ruby.rb")
    
    #File.delete("ruby.rb") # 是直接清空... 连垃圾箱都不去..
    
    
    # 文件模式与所有权
        # => 使用带有掩码的 chmod 方法来改变文件的模式活权限/访问列表:
        # => 如下: 改变一个文件的掩码值.
    #file = File.new("ruby.rb", "w")
    #file.chmod(4000)
    
    # => 掩码 描述
    # => 0700   rwx 掩码, 针对所有者
    # => 0400   r, 针对所有者
    # => 0200   w, 针对所有者
    # => 0100   x, 针对所有者, 无访问权限
    # => 0070   rwx, 针对所属组
    # => 0040   r, 针对所属组
    # => 0020   w, 针对所属组
    # => 0010   x, 针对所属组
    # => 0007   rwx, 针对其他人
    # => 0004   r, 针对其他人
    # => 0002   w, 针对其他人
    # => 0001   x, 针对其他人
    # => 4000   执行时设置用户 ID
    # => 2000   执行时设置所属组 ID
    # => 1000   保存交换文本,甚至在使用后也会保存
    
    
    
    # 文件查询
        # => 如果文件存在, 打开文件.
    #File.open("ruby.rb") if File::exists?("ruby.rb")
        # => 查询目标是否是一个文件
    #puts File.file?("ruby.rb")
        # => 查询目标是否是一个目录
    #puts File::directory?("/usr/local/bin") # => true
        # => 如果查询的是文件, 将返回 false
    #puts File::directory?("ruby.rb")
        # => 查询文件是否可读、可写、可执行:
    #puts File.readable?("ruby.rb") # => true
    #puts File.writable?("ruby.rb") # => true
    #puts File.executable?("ruby.rb") # => false
        # => 查询文件大小是否为零
    #puts File.zero?("ruby.rb") 
        # => 获取文件的大小
    #puts File.size?("ruby.rb")
        # => 查询文件的类型
    #puts File.ftype("2.0.0") # => file、 directory、 characterSpecial、 blockSpecial、 fifo、 link、 socket 或 unknown.
        # => 获取创建、修改活最后访问的时间:
    #puts File::ctime("ruby.rb")
    #puts File::mtime("ruby.rb")
    #puts File::atime("ruby.rb")
    
    
    # Ruby 中的目录
        # => 所有的文件都是包含在目录中
        # => 在 Ruby 中 File 类用于处理文件, Dir 类用于处理目录.
        # warning Next......
    
    # => 浏览目录
        # => 查看当前目录:
    #puts Dir.pwd # => 返回当前目录
    
    # => Dir.entries 获取指定目录内的文件盒目录列表
    #puts Dir.entries("/Users/SanJiang/Desktop").join(' ') 
    # => Dir.foreach 也提供了相同的功能
    #Dir.foreach("/usr/bin") do |entry|
        #puts entry
    #end
    # => 更简洁的获取Dir的方法
    #puts Dir["/usr/bin/*"]
    
    # 创建目录
        # => Dir.mkdir
    #Dir.mkdir("FirstRubyMakeDir")
        # => 设置权限
        # => 掩码 755 设置
    #Dir.mkdir("FirstRubyMakeDir", 755)
    
    # 删除目录
    #Dir.delete("FirstRubyMakeDir")
    
    # 创建文件 & 临时目录
        # => 临时文件是那些在程序执行过程中被简单地创建, 但不会永久性存储的信息.
        # => Dir.tmpdir 提供了当前系统上临时目录的路径, 但是该方法默认情况下是不可用的. 
        # => 为了让 Dir.tmpdir 可用, 使用必需的 ‘tmpdir’ 是必需的.
        # => 你可以把 Dir.tmpdir 和 File.join 一起使用, 来创建一个独立于平台的临时文件.
    #require 'tmpdir'
    #tempfilename = File.join(Dir.tmpdir, "tingtong")
    #tempfile = File.new(tempfilename, "w")
    #tempfile.puts "This is a temporaray file"
    #tempfile.close
    #File.delete(tempfilename)
    
    # 内建函数
    # => File 类和方法: http://www.runoob.com/ruby/ruby-file-methods.html
    # => Dir 类和方法: http://www.runoob.com/ruby/ruby-dir-methods.html
    
    
    

    相关文章

      网友评论

          本文标题:Ruby 文件/文本操作

          本文链接:https://www.haomeiwen.com/subject/cylsextx.html