`
半人马
  • 浏览: 22977 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Rubish File

阅读更多
本文的起因在这里。在松底迪的鼓励和指导下,做了一个我认为合理的File实现,规则如下:

1. 追加String的to_file方法
ruby 代码
  1. "c:/temp/test.txt".to_file.exist?  

2. 区分File对象的new和open,只有当需要对File的内容进行操作时,才open。

3. 推荐的new操作只有一个初始化参数即路径名,open方法只有mode及其它参数,一次典型的调用如下:
ruby 代码
  1. "name".to_file.open("mode"do |file|  
  2.      xxxxxxx  
  3. end  
但为了照顾部分人的喜好,继承ruby胸怀宽广的传统,仍保留带open参数的new方式,如:
ruby 代码
  1. File.new("name""mode")  
将按mode打开文件

4. 如果open调用带有block,则内部保证在block执行完毕后close文件,否则需要显示close.
ruby 代码
  1. file = File.new("c:\\temp\\test.txt")  
  2. puts file.open.readlines  
  3. file.close  
ruby 代码
  1. ”somefile.txt“.to_file.open { |file|  
  2.   puts file.readlines  
  3. }  


4. 维持原File类的静态open方法的语义,典型调用如下:
ruby 代码
  1. File.open("name""mode") { |f|  
  2.       f.xxx  
  3. }  

5. 不需要了解文件内容,如信息查询等操作,全部作为instance method,包括:
ruby 代码
  1. :directory?, :file?, :readable?, :owned?, :pipe?, :mtime?, :extname:ftype,   
  2. :executable_real?, :executable?, :dirname:exist?, :basename:blockdev?,   
  3. :chardev?, :atime:chmod:chown:ctime:delete:grpowned?, :lchmod:stat,   
  4. :readable_real?, :readlink:rename:setgid:setuid:size:size?, :socket?,   
  5. :split:sticky:symlink?, :truncate:writable?, :writable_real:zero?  
详情请参考ruby的缺省File实现的文档

6. 对于目录,追加each遍历方法,并去掉恶心的“.", ".."两个东西,每一个遍历项是一个新的File对象,典型调用如下:
ruby 代码
  1. File.new("/dir").each { |child|  
  2.     if child.directory?  
  3.        ......  
  4.     else   
  5.        .....  
  6.     end  
  7. }      

7. 追加文件实例的create方法
ruby 代码
  1. "/somedir/somefile".to_file.create  
追加opened?方法,查询文件是否已被打开
维持path语义,返回构造时提供的路径名,类型为字符串,不做normalize

8. 其它功能均维持File的原状。

代码见附件,使用时在自己的脚本前require一下即可。
分享到:
评论

相关推荐

    Deluxe Rubbish_paletteCAD_Rubbish!_

    《全面解析"Palette CAD Deluxe Rubbish Scripts"与"Deluxe Rubbish_paletteCAD_Rubbish!"》 在IT行业中,设计工具的使用对于提高工作效率和创作质量至关重要。"Palette CAD Deluxe Rubbish Scripts"是一款专为设计...

    rubbish-debug.apk

    rubbish-debug.apk

    rubbish.sql

    垃圾分类 MYSQL表结构 分类数据 包含两张表,京版分类及数据,'可回收物','是指在日常生活中或者为日常生活提供服务的活动中产生的,已经失去原有全部或者部分使用价值,回收后经过再加工可以成为生产原料或者经过...

    googlenet-rubbish-1.rar

    1、数据处理 1.1 修改data-config中的路径为自己图片存放路径, 并在该路径下创建train-img test-img valid-img 三个文件夹,把分类好的数据放在train-img中 1.2 运行data_preparation_val 把90%数据作为训练 10%...

    water_rubbish.zip

    以"water_rubbish.zip"命名的压缩包文件,正是这样一个专注于水环境中的垃圾识别的数据集,它为科研人员和开发者提供了宝贵的资源,推动了智能识别技术在环保领域的应用。 该数据集的标签包含了七种常见的水生垃圾...

    Delete-Maven-Rubbish.batwindows下删除未下载成功的.update文件。maven删除脚本

    Delete-Maven-Rubbish.bat

    Influencer_Marketing_For_Brands_Rubbish!_aircraft_

    而标签“Rubbish! aircraft”同样没有直接关联到IT领域的具体知识点。压缩包子文件的文件名称虽然提及"Influencer_Marketing_For_Brands",这可能是指影响者营销的资料,但没有足够的信息来生成超过1000字的IT专业...

    RubbishTool

    "RubbishTool"是一个可能用于学习和研究目的的开源项目,从其名称和标签"垃圾代码, Rubbish Code"来看,我们可以推测这可能是一个专门用于解析、分析或处理不良编程实践或者低质量代码的工具。这样的工具对于理解并...

    Smart_Rubbish.rar

    通过语音识别模块ASR M08-B进行垃圾分类的语音识别,当说出具体垃圾名后,语音播报模块播放出具体垃圾分类名,同时对应分类的垃圾桶自动开盖(舵机旋转实现),延时指定时间后,垃圾桶自动合盖(舵机旋转实现)

    rubbish-classify.zip

    基于python用深度学习实现垃圾分类识别,包含数据集,识别准确率在90%左右,有注释,代码简洁易懂。

    tp_rubbish.sql

    垃圾分类原始数据库,包含物品名称、类别名称、类别代号等,类别有干垃圾、湿垃圾、可回收物、有害垃圾

    Delete Every kind of Rubbish

    这是一个批处理文件,几乎能删除任何文件夹,文件以增加磁盘的可用空间。

    2024年全国大学生电子设计竞赛_只能垃圾分类系统_开源代码_stm32H7_rubbish_code.zip

    2024年全国大学生电子设计竞赛_只能垃圾分类系统_开源代码_stm32H7_rubbish_code

    遗传总结Essential of rubbish medicine genetics

    1. 绪论 第一节 医学遗传学的性质 医学遗传学的定义:医学与遗传学相结合,以人类为研究对象,以遗传病为研究内容,具体 研究遗传病的发生机理、传递方式、诊断方法、治疗措施、再发风险的预测和如何预防等。...

    C++读写文件的实现

    2. **打开文件**:使用`open`方法以二进制写入模式(`ios::out | ios::binary`)打开名为"rubbish.dat"的文件。二进制模式下,数据将以原生机器格式写入,不经过任何转换,这对于存储和传输复杂数据结构特别有用。 3....

    code_Rubbish_object_detection.zip

    《基于Torchversion的垃圾分类目标检测技术解析》 在当今环保意识日益增强的时代,垃圾分类作为一项重要的环保举措,正逐渐在全球范围内推广。它通过科学管理,不仅能够提高资源的再利用率,减少环境污染,还能有效...

    “维尼TR”(Throw Rubbish)服务互联网化运营方案的研究.pdf

    为了更好地适应和解决这一问题,“维尼TR”(Throw Rubbish)服务应运而生,致力于将互联网技术与垃圾回收服务相结合,创新性地提供垃圾分类代扔服务,并在运营模式上进行深入研究。 首先,垃圾分类代扔服务是针对...

    mysql 垃圾分类数据表 sql文件、rubbish.sql

    mysql 垃圾分类数据表 sql文件,里面包含了当前所有分类数据。

    note-rubbish:一些杂七杂八的东西

    在“note-rubbish”这个看似杂乱无章的学习资源包中,隐藏着丰富的Java编程知识。这个压缩包可能是一个个人的学习记录或者项目代码库,虽然没有明确的组织结构,但我们可以从“java学习笔记”这个描述中推测,它包含...

Global site tag (gtag.js) - Google Analytics