RUBY语言怎么判断指定目录是否存在

Python019

RUBY语言怎么判断指定目录是否存在,第1张

ruby中判断目录是否存在:

File.directory?(argu)

ruby文件操作:使用File类的静态方法,或者File类的实例对象

File类的静态方法

File::atime(filename)

返回指定文件的最后访问时间

1.创建文件夹

Dir.new %%1

Dir::mkdir #不指定目录全名称时,缺省为工作目录

Dir::chdir() 改变当前脚本工作目录

FileUtils.mkdir 'test'

file = File.new("cmd.txt")

file.each do |line|

puts line if line =~ /target/

end

2.创建文件

改变当前根目录

Dir.chdir("/home/guy/sandbox/tmp") 

 

Dir.chroot("/home/guy/sandbox")

Dir.new %%1

#Dir::rmdir #不指定目录全名称时,缺省为工作目录

3.删除文件

改变当前根目录

Dir.chdir("/home/guy/sandbox/tmp") 

Dir.chroot("/home/guy/sandbox")

Dir.new %%1

#Dir::rmdir #不指定目录全名称时,缺省为工作目录

4.删除文件夹

#require 'fileutils' 

FileUtils.rm_r(%%1)

5.删除一个文件下夹所有的文件夹

Dir::chdir

Dir::pwd属性或者Dir.getwd()

#改变当前脚本工作目录

6.清空文件夹

Dir::chdir %%1 改变当前脚本工作目录

Dir::rmdir #不指定目录全名称时,缺省为工作目录

Dir.new %%1

#require 'ftools'

FileUtils.mkdir 'test'

file = File.new(%%1) #"cmd.txt"

file.each do |line|

puts line if line =~ /target/

end

7.读取文件

#require 'ftools'

File.open(%%1).readlines #'文件名'

#require 'ftools'

arr = IO.readlines(%%1) #"myfile"

lines = arr.size

#puts "myfile has #{lines} lines in it."

#longest = arr.collect {|x| x.length}.max

#puts "The longest line in it has #{longest} characters."

8.写入文件

f=open(%%1,"w")

f.puts(%%2)

9.写入随机文件

#require 'ftools'

file = File.open(%%1,"w") 

file.seek(5) 

str = file.gets # "fghi"

#require 'ftools'

File.open('文件名')

File.open("cmd.txt","r") do |file|

while line=file.gets

puts line

end

end

puts

file=File.new("cmd.txt","r")

file.each_line do |line|

puts line

end

IO.foreach("cmd.txt") do |line|

puts line if line =~ /target/

puts line if line !~ /target/

end

###

Dir#pos

返回当前子文件指针

Dir#pos=

设置子文件指针

Dir#rewind

设置子文件指针到起始位置

Dir#seek

设置子文件指针

Dir#tell

获取当前指针

10.读取文件属性

#文件中是否有内容,(返回false为有内容,返回true为空)

File.new('文件名').stat.zero?

#文件大小

File.size?('文件名')

flag1 = FileTest::zero?("file1")

flag2 = FileTest::size?("file2")

size1 = File.size("file1")

size2 = File.stat("file2").size

###

File::atime(filename)

返回指定文件的最后访问时间

11.写入属性

12.枚举一个文件夹中的所有文件夹

#require 'ftools'

puts Dir.glob('**/*').each { | file | file.downcase }

#要区分目录和普通文件我们这样使用

file1 = File.new("/tmp")

file2 = File.new("/tmp/myfile")

test1 = file1.directory? # true

test2 = file1.file? # false

test3 = file2.directory? # false

test4 = file2.file? # true

###

遍历目录

Dir.foreach(%%1) { |entry| puts entry}

13.复制文件夹

require "fileutils"

FileUtils.cp %%1,%%2

14.复制一个目录下所有的文件夹到另一个文件夹下

#require 'FileUtils'

list=Dir.entries(%%1)

list.each_index do |x|

FileUtils.cp "#{list[x]}",%%2 if !File.directory?(list[x])

end

15.移动文件夹

#require 'FileUtils'

FileUtils.mv %%1,%%2

16.移动一个目录下所有的文件夹到另一个目录下

#require 'FileUtils'

list=Dir.entries(%%1)

list.each_index do |x|

FileUtils.mv "#{list[x]}",%%2 if !File.directory?(list[x])

end

17.以一个文件夹的框架在另一个目录创建文件夹和空文件

#########################

//文件是否存在

File.exist?('文件名')

flag = FileTest::exist?("LochNessMonster")

flag = FileTest::exists?("UFO")

#########################

require 'rubygems'

require 'ruby-debug'

require "find"

module Cz_dirtools

def mkdirs_to(tar,src=Dir.getwd)

#debugger

if tar.class==NilClass then

puts "PLZ input target directory name..."

return

elsif !FileTest.directory?(tar)#如果tar不是一个目录

puts ("Creating #{File.expand_path(tar)}")

Dir.mkdir("#{File.expand_path(tar)}")#创建tar目录

end

src=if FileTest.directory?(src) then

src#如果src是一个目录名,则返回自身

else

File.dirname(src)#如果src为一个文件名,则返回该文件所在目录

end

#Dir.foreach可以复制目标路径第一层目录结构而不复制子目录

#~ Dir.foreach(src) do |dir|

#~ if FileTest.directory?(dir) &&dir!=tar &&dir!='..' &&dir!='.' then #忽略自身,忽略上级目录"..",忽略本级目录"."

#~ #puts dir

#~ begin

#~ Dir.mkdir("#{File.expand_path(tar)}/#{dir}")

#~ rescue#如果该目录已存在则直接跳过否则创建该目录

#~ end

#~ end

#~ end

#Find.find可以复制目标路径的完整目录结构,包括子目录

dirs=Array.new

Find.find(src) do |dir|

unless !FileTest.directory?(dir) || File.basename(dir)==tar || File.basename(dir)=='..' || File.basename(dir)=='.' || File.basename(dir)==File.basename(src)#忽略自身,忽略上级目录"..",忽略本级目录"."

dirs<<dir

end

end

#puts dirs

dirs.each do |dir|

begin

Dir.mkdir("#{File.expand_path(tar)}/#{dir.gsub(src,'')}")

rescue#如果该目录已存在则直接跳过否则创建该目录

end

end

end

end

require 'rubygems'

require 'ruby-debug'

require "find"

module Cz_dirtools

def mkdirs_to(tar,src=Dir.getwd)

#debugger

if tar.class==NilClass then

puts "PLZ input target directory name..."

return

elsif !FileTest.directory?(tar)#如果tar不是一个目录

puts ("Creating #{File.expand_path(tar)}")

Dir.mkdir("#{File.expand_path(tar)}")#创建tar目录

end

src=if FileTest.directory?(src) then

src#如果src是一个目录名,则返回自身

else

File.dirname(src)#如果src为一个文件名,则返回该文件所在目录

end

#Dir.foreach可以复制目标路径第一层目录结构而不复制子目录

#~ Dir.foreach(src) do |dir|

#~ if FileTest.directory?(dir) &&dir!=tar &&dir!='..' &&dir!='.' then #忽略自身,忽略上级目录"..",忽略本级目录"."

#~ #puts dir

#~ begin

#~ Dir.mkdir("#{File.expand_path(tar)}/#{dir}")

#~ rescue#如果该目录已存在则直接跳过否则创建该目录

#~ end

#~ end

#~ end

#Find.find可以复制目标路径的完整目录结构,包括子目录

dirs=Array.new

Find.find(src) do |dir|

unless !FileTest.directory?(dir) || File.basename(dir)==tar || File.basename(dir)=='..' || File.basename(dir)=='.' || File.basename(dir)==File.basename(src)#忽略自身,忽略上级目录"..",忽略本级目录"."

dirs<<dir

end

end

#puts dirs

dirs.each do |dir|

begin

Dir.mkdir("#{File.expand_path(tar)}/#{dir.gsub(src,'')}")

rescue#如果该目录已存在则直接跳过否则创建该目录

end

end

end

end

18.复制文件

#require 'FileUtils'

FileUtils.cp %%1, %%2

19.复制一个目录下所有的文件到另一个目录

#require 'FileUtils'

list=Dir.entries(%%1)

list.each_index do |x|

FileUtils.cp "#{list[x]}",%%2 if !File.directory?(list[x])

end

20.提取扩展名

21.提取文件名

%%2 = File.basename(%%1)

22.提取文件路径

%%2 = File.dirname(%%1)

23.替换扩展名

24.追加路径

25.移动文件

26.移动一个文件夹下所有文件到另一个目录

#require 'FileUtils'

list=Dir.entries(%%1)

list.each_index do |x|

FileUtils.mv "#{list[x]}",%%2 if !File.directory?(list[x])

end

27.指定目录下搜索文件

#require "find" 

 

def findfiles(dir, name) 

 list = [] 

 Find.find(dir) do |path| 

Find.prune if [".",".."].include? path 

case name 

 when String 

list << path if File.basename(path) == name 

 when Regexp 

list << path if File.basename(path) =~ name 

else 

 raise ArgumentError 

end 

 end 

 list 

end 

 

findfiles %%1,%%2 #"/home/hal", "toc.txt"

28.打开对话框

29.文件分割

逐字节对文件进行遍历

可以使用each_byte方法,如果你想要转换byte到字符的话使用chr方法:

file = File.new("myfile") 

e_count = 0 

file.each_byte do |byte| 

 e_count += 1 if byte == ?e 

end

30.文件合并

逐字节对文件进行遍历

可以使用each_byte方法,如果你想要转换byte到字符的话使用chr方法:

file = File.new("myfile") 

e_count = 0 

file.each_byte do |byte| 

 e_count += 1 if byte == ?e 

end

31.文件简单加密

32.文件简单解密

33.读取ini文件属性

34.合并一个文件下所有的文件

35.写入ini文件属性

36.获得当前路径

File.dirname($0)

37.读取XML数据库

38.写入XML数据库

39.ZIP压缩文件

#require 'rubygems'

#require 'zip/zipfilesystem'

Zip::ZipFile.open(%%1, Zip::ZipFile::CREATE) do |zip| #'zipfile.zip'

zip.file.open('file1', 'w') { |f| f <<'This is file 1.' }

zip.dir.mkdir('sub_dir')

zip.file.open('sub_dir/file2', 'w') { |f| f <<'This is file 2.' }

end

40.ZIP解压缩

41.获得应用程序完整路径

42.ZIP压缩文件夹

#require 'rubygems'

#require 'zip/zipfilesystem'

def compress

Zip::ZipFile.open 'zipfile.zip', Zip::ZipFile::CREATE do |zip|

add_file_to_zip('dir', zip)

end

end

def add_file_to_zip(file_path, zip)

if File.directory?(file_path)

Dir.foreach(file_path) do |sub_file_name|

add_file_to_zip("#{file_path}/#{sub_file_name}", zip) unless sub_file_name == '.' or sub_file_name == '..'

end

else

zip.add(file_path, file_path)

end

end

add_file_to_zip %%1,%%2

43.递归删除目录下的文件

#require 'ftools'

file_path = String.new

file_path="D:"

if File.directory? file_path

Dir.foreach(file_path) do |file|

if file!="." and file!=".."

puts "File:"+file

end

end

end

44.验证DTD

45.Schema 验证

46.Grep

#!/usr/bin/env ruby

# Grep with full regexp-functionality via ruby

if ARGV.shift == "-p"

pattern = Regexp.new(ARGV.shift)

else

puts "Please give me a pattern with the '-p' option"

exit

end

ARGV.each do |filename|

File.open(filename) do |file|

file.each do |line|

puts "#{filename} #{file.lineno.to_s}: #{line}" if

pattern.match(line)

end

end

end

Using it via: rgrep -p '/delete /i' *.php does not match anything, but

this

#!/usr/bin/env ruby

# Grep with full regexp-functionality via ruby

if ARGV.shift == "-p"

pattern = Regexp.new(ARGV.shift)

else

puts "Please give me a pattern with the '-p' option"

exit

end

ARGV.each do |filename|

File.open(filename) do |file|

file.each do |line|

puts "#{filename} #{file.lineno.to_s}: #{line}" if /delete

/i.match(line)

end

end

end

47.直接创建多级目录

#require "fileutils"

FileUtils.makedirs(%%1)

48.批量重命名

49.文本查找替换 ReplaceText

50.文件关联

51.操作Excel文件

52.设置JDK环境变量

53.选择文件夹对话框

54.删除空文件夹

55.发送数据到剪贴板

56.从剪贴板中取数据

57.获取文件路径的父路径

58.创建快捷方式 CreateShortCut

59.弹出快捷菜单

60.文件夹复制到整合操作

61.文件夹移动到整合操作

62.目录下所有文件夹复制到整合操作

63.目录下所有文件夹移动到整合操作

64.目录下所有文件复制到整合操作

65.目录下所有文件移动到整合操作

66.对目标压缩文件解压缩到指定文件夹

67.创建目录副本整合操作

68.打开网页

69.删除空文件夹整合操作

70.获取磁盘所有分区后再把光驱盘符去除(用"\0"代替),把结果放在数组allfenqu[] 中,数组中每个元素代表一个分区盘符,不包括 :\\ 这样的路径,allfenqu[]数组开始时存放的是所有盘符。

当我用这样的代码测试结果是正确的,光驱盘符会被去掉:

CString root//root代表盘符路径

for(i=0i<20i++) //0-20代表最大的盘符数

{

root.Format("%c:\\",allfenqu[i])

if(GetDriveType(root)==5)

allfenqu[i]='\0'

}

但我用这样的代码时结果却无法去掉光驱盘符,allfenqu[]中还是会包含光驱盘符:

CString root

for(i=0i<20i++)

{

root=allfenqu[i]+":\\"

if(GetDriveType(root)==5)

allfenqu[i]='\0'

}

HTML教程:

HTTP协议基础:

下面列出了 HTML 定义的元素集。点击链接即可前往元素的定义,其中包含了该元素的所有成员集。

对象

a 标明超链接的起始或目的位置。

acronym 标明缩写词。

address 特定信息,如地址、签名、作者、此文档的原创者。

applet 在页面上放置可执行内容。

area 定义一个客户端图像映射中一个超级链接区域的形状、坐标和关联 URL。

b 指定文本应以粗体渲染。

base 指定一个显示 URL 用于解析对于外部源的链接和引用,如图像和样式表。

baseFont 设置渲染文本时作为缺省字体的基础字体值。

bdo 允许作者为选定文本片断禁用双向法则。

bgSound 允许页面带有背景声音或创建音轨。

big 指定内含文本要以比当前字体稍大的字体显示。

blockQuote 设置文本中的一段引语。

body 指定文档主体的开始和结束。

br 插入一个换行符。

button 指定其中所含的 HTML 要被渲染为一个按钮。

caption 指定表格的简要描述。

center 将后面的文本和图像居中显示。

cite 用斜体显示标明引言。

code 指定代码范例。

col 指定基于列的表格缺省属性。

colGroup 指定表格中一列或一组列的缺省属性。

comment 标明不可见的注释。

custom 代表了一个用户自定义元素。

dataTransfer 提供了对于预定义的剪贴板格式的访问,以便在拖曳操作中使用。

dd 在定义列表中表明定义。定义通常在定义列表中缩进。

del 表明文本已经从文档中删除。

dfn 表明术语的定义实例。

dir 引起目录列表。

div 指定渲染 HTML 的容器。

dl 引起定义列表。

dt 在定义列表中表明定义术语。

em 强调文本,通常以斜体渲染。

embed 允许嵌入任何文档。

fieldSet 在字段集包含的文本和其它元素外面绘制一个方框。

font 指定用于渲染所包含文本的新字体、大小和颜色。

form 指定所包含控件在表单中起作用。

frame 在 FRAMESET 元素内指定单个框架。

frameSet 指定一个框架集,用于组织多个框架和嵌套框架集。

head 提供了关于文档的无序信息集合。

hn 以标题样式渲染文本。

hr 绘制水平线。

html 表明文档包含 HTML 元素。

HTML 注释 避免任何内含文本或 HTML 源代码被处理并在浏览器窗口中显示。

i 指定文本应以斜体渲染,若可用的话。

iframe 创建内嵌浮动框架。

img 在文档中嵌入图像或视频剪辑。

IMPORT 从元素行为中导入标签定义。

input 创建各种表单输入控件。

input type=button 创建按钮控件。

input type=checkbox 创建复选框控件。

input type=file 创建文件上载控件,该控件带有一个文本框和一个浏览按钮。

input type=hidden 传输关于客户/服务器交互的状态信息。

input type=image 创建一个图像控件,该控件单击后将导致表单立即被提交。

input type=password 创建与 INPUT type=text 控件类似的单行文本输入控件,不过其中并不显示用户输入的内容。

input type=radio 创建单选钮控件。

input type=reset 创建一个按钮,该按钮单击后将重置表单控件为其缺省值。

input type=submit 创建一个按钮,该按钮单击后将提交表单。

input type=text 创建一个单行的文本输入控件。

ins 指定被插入到文档中的文本。

isIndex 使浏览器显示一个对话框,提示用户输入单行文本。

kbd 以固定字体渲染文本。

label 为页面上的其它元素指定标签。

legend 在 fieldSet 对象绘制的方框内插入一个标题。

li 引起列表中的一个项目。

link 允许当前文档和外部文档之间建立连接。

listing 以固定字体渲染文本。

map 包含客户端图像映射的坐标数据。

marquee 创建一个滚动的文本字幕。

menu 创建一个项目的无序列表。

meta 向服务器和客户端传达关于文档的隐藏信息。

noBR 不换行渲染文本。

noFrames 包含对于那些不支持 FRAMESET 元素的浏览器使用的 HTML。

noScript 指定要在不支持脚本的浏览器显示的 HTML。

object 向 HTML 页面中插入对象。

ol 绘制文本的编号列表。

optGroup 允许作者对 select 元素中的选项进行逻辑分组。

option 引起 SELECT 元素中的一个选项。

p 引起一段。

param 设置 APPLET、EMBED 或 OBJECT 元素的属性初始值。

plainText 以固定宽度字体渲染文本,不处理标签。

pre 以固定宽度字体渲染文本。

q 分离文本中的引语。

rt 指明 RUBY 元素的注音文本。

ruby 指明要放置在文本串之上或内嵌的注解或发音指南。

s 以删除线字体渲染文本。

samp 指定代码范例。

script 为脚本指定由脚本引擎解释的脚本。

select 引起列表框或下拉框。

small 指定内含文本要以比当前字体稍小的字体显示。

span 指定内嵌文本容器。

strike 以删除线字体渲染文本。

strong 以粗体渲染文本。

style 指定页面的样式表。

sub 指定内含文本要以下标的形式显示,通常比当前字体稍小。

sup 指定内含文本要以上标的形式显示,通常比当前字体稍小。

table 指定所含内容要组织成行列的表格。

tBody 指明行作为表格主体。

td 指定表格中的单元格。

textArea 指定多行文本输入控件。

tFoot 指明行作为表尾。

th 指定标题列。标题列将在单元格中居中并以粗体显示。

tHead 指明行作为表头。

title 包含文档的标题。

tr 指定表格中的一行。

tt 以固定宽度字体渲染文本。

u 带下划线渲染文本。

ul 绘制文本的项目符号列表。

var 定义编程变量。通常以斜体渲染。

wbr 向一块 NOBR 文本中插入软换行。

xml 在 HTML 页面上定义一个 XML 数据岛。

xmp 以固定宽度字体渲染作为示例的字体。

map 和 select 可以说是ruby枚举方法中最重要也最有用的两个方法,如果你已经学习并了解Array和Hash,你一定会觉得他们非常漂亮和灵活,这只是ruby这个美女一半的风情而已......每个人都有自己习惯的添加、删除、访问数据的方法,也都有实现#each迭代的风格各异的版本,但是,你知道吗?使得Array和Hash在Ruby中真正强大的原因,是因为它们可以使用各种枚举(Enumerable)的方法,比如map和select。