【【目录】】

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

引用当前文件所在目录上一级目录下某.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. Matlab基础部分2-数组和矩阵分析

    矩阵块操作: 矩阵尺寸改变: 矩阵的查找: 矩阵的排序: 矩阵求和: 矩阵的求积: 矩阵的差分: 全零矩阵: 单位矩阵: 随机矩阵: 伴随矩阵: 方针行列式计算: 特征值: 对角矩阵: 三角矩阵: 矩 ...

  2. GUI常用对话框5

    %输入对话框 name = inputdlg('请输入姓名','实例'); ret = inputdlg({'请输入姓名','请输入性别'},'实例') %一个输入表中多行输入 %留言对话框 info ...

  3. ubuntu16.04 无法连接wifi和校园宽带问题的解决办法

    我遇到的问题是在ubuntu16.04系统下无法进行上海大学校园宽带连接或者校园wifi连接,我一个一个来解决这两个问题. 1.无法连接校园宽带的问题:输入校园账号和密码后,宽带始终连接不上.(上海大 ...

  4. flask框架----设置配置文件的几种方式

    设置配置文件的几种方式 ==========方式一:============ app.config['SESSION_COOKIE_NAME'] = 'session_lvning' #这种方式要把所 ...

  5. Python爬虫【二】请求库requests

    一.requests的常用请求方式 #各种请求方式:常用的就是requests.get()和requests.post() >>> import requests >>& ...

  6. kswapd0 进程CPU占用过高

    前几天遇到的一个问题,自己本地用VM配置的虚拟机,一般会top查看进程以及CPU占用的一些情况.又一次用laravel 打印对象,里面的内容比较多,浏览器当时就卡了. 然后看进程的情况.我以为会是ng ...

  7. JavaScript之BOM对象

    JavaScript bom对象 BOM对象 window对象 所有浏览器都支持 window 对象.概念上讲.一个html文档对应一个window对象.功能上讲: 控制浏览器窗口的.使用上讲: wi ...

  8. Vue小案例 之 商品管理------学习过滤器 使用过滤器处理日期的格式

    代码学习过滤器 过滤器介绍:过滤模型数据,在数据显示前做预处理操作: 内置过滤器:在1.x中,Vue提供了内置过滤器,但是在2.x中已经完全废除: 解决办法: (1)使用第三方库来替代1.x中的内置过 ...

  9. Python爬虫(三)——对豆瓣图书各模块评论数与评分图形化分析

    文化         经管 ....略 结论: 一个模块的评分与评论数相关,评分为 [8.8——9.2] 之间的书籍评论数往往是模块中最多的

  10. 2018-2019-1 20189206 《Linux内核原理与分析》第二周作业

    Linux内核分析 第二周学习 知识总结 操作系统与内核 操作系统 指在整个系统中负责完成最基本功能和系统管理的那些部分 内核 实际是操作系统的内在核心 内核独立于普通应用程序,拥有受保护的内存空间和 ...