【【目录】】

当前文件在根目录下一个文件夹下

引用当前文件所在目录上一级目录下某.rb文件

方法一

require File.join(File.dirname(FILE),'..','test_one')

方法二

require File.join(FILE,'..','..','test_one')

cal = Calculator1.new

cal.abc

引用当前文件所在目录上一级目录下(在这里就是根目录下)所有.rb文件

Dir[FILE + '/../../*.rb'].each {|file| p file }

可以打印出对应目录下所有.rb文件

Dir[FILE + '/../../*.rb'].each {|file| require file }

但是require后就还是引用不到对应文件下的类,原因不明

参考:https://www.cnblogs.com/timsheng/archive/2013/04/08/3007059.html

1、引用一个文件

例: 引用当前rb同目录下的file_to_require.rb

先介绍3种方法

require File.join(_FILE, '../file_to_require')。

require File.expand_path('../file_to_require', FILE)

require File.dirname(FILE) + '/file_to_require'

其中,File.expand_path是Rails常用的做法。

__FILE__为常量,表示当前文件的绝对路径,如/home/oldsong/test.rb

法四:

$LOAD_PATH.unshift(File.dirname(FILE))

require 'bar'

先把目录加入LOAD_PATH变量中,然后可直接引用文件名。

2、引用一个目录下所有文件

Ruby没有Java中的import java.io.*;

引用时不能用通配符,估计以后的版本有可能加上。

例:引用当前rb相同目录下lib/文件下所有*.rb文件。

法一:

Dir[File.dirname(FILE) + '/lib/*.rb'].each {|file| require file }

法二:

一个gem搞定

https://rubygems.org/gems/require_all

【文件】

知识点: FileUtils 基本文件操作

FileUtils.cd( dir, *options )

FileUtils.cd( dir, *options ) {|dir| .... }

Options: noop verbose移动到dir目录。若被用作迭代器的话, 将在块停止工作之后返回原来的目录。 FileUtils.cd '/', :verbose # chdir and report it

FileUtils.uptodate?( newer, older_list, *options )

Options: verbose若newer比older_list中的任何文件都新的话,就返回真。不存在的文件会被看做是最老的文件。 FileUtils.newest? 'hello.o', 'hello.c', 'hello.h' or system 'make'

FileUtils.mkdir( dir, *options )

Options: noop verbose生成dir目录 。 FileUtils.mkdir 'test' FileUtils.mkdir %w( tmp data ) FileUtils.mkdir 'notexist', :noop # does not create really

FileUtils.mkdir_p( dir, *options )

Options: noop verbose将生成dir目录及其所有上级目录。例如 FileUtils.mkdir_p '/usr/local/lib/ruby'将生成下列所有目录(若没有的话)。 * /usr * /usr/local * /usr/local/bin * /usr/local/bin/ruby

FileUtils.rmdir( dir, *options )

Options: noop, verboseremoves directory DIR. FileUtils.rmdir 'somedir' FileUtils.rmdir %w(somedir anydir otherdir) # does not remove directory really, outputing message. FileUtils.rmdir 'somedir', :verbose, :noop

FileUtils.ln( old, new, *options )

Options: force noop verbose生成指向old的硬连接new 。若new已存在且为目录时,生成new/old 。若new已存在且不是目录的话,会引发Errno::ENOTDIR异常。但是若指定了force选项的话,就会覆盖new。 FileUtils.ln 'gcc', 'cc', :verbose FileUtils.ln '/usr/bin/emacs21', '/usr/bin/emacs'

FileUtils.ln( list, destdir, *options )

Options: force noop verbose生成指向list[0]的硬连接destdir/list[0]和指向list[1]的硬连接destdir/list[1]...。若destdir不是目录的话, 将引发Errno::ENOTDIR异常。 include FileUtils cd '/bin' ln %w(cp mv mkdir), '/usr/bin'

FileUtils.ln_s( old, new, *options )

Options: force noop verbose生成指向old的符号连接new 。若new已存在且为目录时,生成new/old 。若new已存在且不是目录的话,会引发Errno::ENOTDIR异常。但是若指定了force选项的话,就会覆盖new。 FileUtils.ln_s '/usr/bin/ruby', '/usr/local/bin/ruby' FileUtils.ln_s 'verylongsourcefilename.c', 'c', :force

FileUtils.ln_s( list, destdir, *options )

Options: force noop verbose生成指向list[0]、list[1]...的符号连接 dir/list[0], dir/list[1]...。若destdir不是目录的话,将引发 Errno::ENOTDIR异常。生成指向list[0]的符号连接 destdir/list[0]和指向list[1]的符号连接destdir/list[1]...。若destdir不是目录时,将引发Errno::ENOTDIR异常。 FileUtils.ln_s Dir.glob('bin/*.rb'), '/home/aamine/bin'

FileUtils.ln_sf( src, dest, *options )

Options: noop verbose与ln_s(src,dest,:force)相同。

FileUtils.cp( src, dest, *options )

Options: preserve noop verbose将文件src拷贝到dest。若dest是目录的话,就拷贝到dest/src。若dest早已存在且并非目录时将进行覆盖。 FileUtils.cp 'eval.c', 'eval.c.org'

FileUtils.cp( list, dir, *options )

Options: preserve noop verbose把file1拷贝到dir/file1,把file2拷贝到dir/file2,就这样将file1、file2以相同的文件名拷贝到dir目录。若dir并非目录时, 会引发Errno::ENOTDIR异常。 FileUtils.cp 'cgi.rb', 'complex.rb', 'date.rb', '/usr/lib/ruby/1.6' FileUtils.cp :verbose, %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'

FileUtils.cp_r( src, dest, *options )

Options: preserve noop verbose将src拷贝到dest。若src是目录则进行递归式的拷贝。此时若dest是目录,则拷贝到dest/src。 # installing ruby library "mylib" under the site_ruby FileUtils.rm_r site_ruby + '/mylib', :force FileUtils.cp_r 'lib/', site_ruby + '/mylib'

FileUtils.cp_r( list, dir, *options )

Options: preserve noop verbose将list[0]、list[1], list[2]...等拷贝到dir目录中.若list[n]是目录的话,就进行递归式的拷贝。 FileUtils.cp_r %w(mail.rb field.rb debug/) site_ruby + '/tmail' FileUtils.cp_r Dir.glob('*.rb'), '/home/aamine/lib/ruby', :noop, :verbose

FileUtils.mv( src, dest, *options )

Options: noop verbose将from移动直to。若to是目录,就移动到to/from。若给出了3个以上的参数时, 将把其他文件移动到dir目录中。 FileUtils.mv 'badname.rb', 'goodname.rb' FileUtils.mv 'stuff.rb', 'lib/ruby', :force

FileUtils.mv( list, dir, *options )

Options: noop verbose将file1 file2...移动到dir/file1 dir/file2...若进行跨区移动时,则进行拷贝。 FileUtils.mv 'junk.txt', 'dust.txt', '/home/aamine/.trash/' FileUtils.mv Dir.glob('test*.rb'), 'T', :noop, :verbose

FileUtils.rm( list, *options )

Options: force noop verbose删除list[0]、list[1]...。若指定了:force 选项的话,则会忽略操作过程中所有的StandardError。 FileUtils.rm %w( junk.txt dust.txt ) FileUtils.rm Dir['*.so'] FileUtils.rm 'NotExistFile', :force # never raises exception

FileUtils.rm_r( list, *options )

Options: force noop verbose删除list[0], list[1]...文件或目录.若使用了force选项时,将忽略StandardError。 FileUtils.rm_r Dir.glob('/tmp/*') FileUtils.rm_r '/', :force #

【Ruby】【目录 & 引用 & 文件 】的更多相关文章

  1. [Python] 目录和文件操作

    在Linux系统下用Python写脚本,肯定不能避免各种与目录和文件夹有关的操作.为了以后方便查阅,简单地针对Python中与目录和文件夹有关的操作进行汇总. 需要实现导入的模块为: import o ...

  2. dos下遍历目录和文件的代码(主要利用for命令)

    对指定路径指定文件进行遍历的程序,这里有多个批处理代码,但运行好像有些问题,大家可以根据需要选择 ===== 文件夹结构 ======================================= ...

  3. PHP - 目录与文件

    第6章 目录与文件 学习要点: 1.目录操作 2.磁盘.目录和文件计算 3.文件处理 将相关的数据组织为文件和目录等实体,这一直是计算环境的核心概念.出于这个原因,程序员需要有一种方法来获得关于文件和 ...

  4. Asp.Net Core 轻松学-项目目录和文件作用介绍

    前言     上一章介绍了 Asp.Net Core 的前世今生,并创建了一个控制台项目编译并运行成功,本章的内容介绍 .NETCore 的各种常用命令.Asp.Net Core MVC 项目文件目录 ...

  5. Web应用程序的敏感信息-隐藏目录和文件

    Web应用程序的敏感信息-隐藏目录和文件 0x1.场景 Web应用程序根文件夹中可能存在大量隐藏信息:源代码版本系统文件夹和文件(.git,.gitignore,.svn),项目配置文件(.npmrc ...

  6. dos下遍历目录和文件的代码(主要利用for命令)(转)

    ===== 文件夹结构 ============================================= D:\test ---A Folder 1 |-----A file 1.txt | ...

  7. 利用python+graphviz绘制数据结构关系图和指定目录下头文件包含关系图

    作为一名linux系统下的C语言开发,日常工作中经常遇到两个问题: 一是分析代码过程中,各种数据结构互相关联,只通过代码很难理清系统中所有结构体的整体架构,影响代码消化的效率; 二是多层头文件嵌套包含 ...

  8. Asp.Net Core 轻松学系列-3项目目录和文件作用介绍

    目录 前言 结语 前言     上一章介绍了 Asp.Net Core 的前世今生,并创建了一个控制台项目编译并运行成功,本章的内容介绍 .NETCore 的各种常用命令.Asp.Net Core M ...

  9. 【漏洞复现】ThinkAdmin v5和v6 未授权列目录任意文件读取(CVE-2020-25540)

    ThinkAdmin v5和v6 未授权列目录/任意文件读取(CVE-2020-25540) 漏洞简介 ThinkAdmin是一套基于ThinkPHP框架的通用后台管理系统.ThinkAdmin v6 ...

随机推荐

  1. 51Nod 1212 无向图最小生成树 (路径压缩)

    N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树.   Input 第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量.(2 <= N <= 1000, 1 &l ...

  2. brctl 命令详解

    安装网桥管理工具包:bridge-utile ```# yum install bridge-utils -y``` ```使用brctl命令创建网桥br1```# brctl addbr br1`` ...

  3. C# Http文件上传下载

    C# Http文件下载公共类(支持断点续传) http://www.cnblogs.com/hayden/archive/2012/04/26/2472815.html C# Http方式下载文件到本 ...

  4. CentOS7安装MySQL冲突和问题解决小结

    摘自:https://blog.csdn.net/typa01_kk/article/details/49059729 问题1: [root@localhost install-files]# rpm ...

  5. Error: could not open `C:\Java\jre7\lib\amd64\jvm.cfg'

    在运行cmd黑窗口时候出现:Error: could not open `C:\Java\jre7\lib\amd64\jvm.cfg'这样的错误的时候,本人没有删除任何文件,只是重新配置了一下jdk ...

  6. scrapy selenium 登陆zhihu

    # -*- coding: utf-8 -*- # 导入依赖包 import scrapy from selenium import webdriver import time import json ...

  7. Docker学习笔记之docker volume 容器卷的那些事(二)

    预览目录 更改目录拥有者 Data Container 切换用户 参考文章 0x00 概述 如果你读了docker volume 容器卷的那些事(一),我想应该不会遇到下面这些问题的,毕竟是具有指导意 ...

  8. Oracle 手动建库

    Oracle在创建实例的时候,多数采用的是dbca的形式..其实手动建库可以提供更大的自由发挥的空间,根据情况进行定制 登录Oracle用户 指定SID(Instance Identifier) ex ...

  9. 微信企业号OAuth2.0验证接口来获取成员的身份信息

    <?php $appid = "请输入您企业的appid"; $secret = "请输入您企业的secreat"; if (!isset($_GET[' ...

  10. uml类图和er图中主外键的表示区别

    在er图也就是数据库中,无论是mysql/oracle都是从表引用主表的pk作为外键. 而在uml类图表示法中,他们的顺序则刚好相反,从主对象导向到子对象,如下: 主体是资金借款方,征信信息和资金借款 ...