文件夾操作

1.創(chuàng)建文件夾

Dir.new %%1

Dir::mkdir #不指定目錄全名稱時(shí)愧口,缺省為工作目錄

Dir::chdir() 改變當(dāng)前腳本工作目錄

FileUtils.mkdir 'test'

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

file.each do |line|

puts line if line =~ /target/

end

2.創(chuàng)建文件

改變當(dāng)前根目錄

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

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

Dir.new %%1

#Dir::rmdir #不指定目錄全名稱時(shí)元扔,缺省為工作目錄

3.刪除文件

改變當(dāng)前根目錄

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

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

Dir.new %%1

#Dir::rmdir #不指定目錄全名稱時(shí)外臂,缺省為工作目錄

4.刪除文件夾

#require 'fileutils'

FileUtils.rm_r(%%1)

5.刪除一個(gè)文件下夾所有的文件夾

Dir::chdir

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

#改變當(dāng)前腳本工作目錄

6.清空文件夾

Dir::chdir %%1 改變當(dāng)前腳本工作目錄

Dir::rmdir #不指定目錄全名稱時(shí)谱仪,缺省為工作目錄

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.寫入隨機(jī)文件

#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

返回當(dāng)前子文件指針

Dir#pos=

設(shè)置子文件指針

Dir#rewind

設(shè)置子文件指針到起始位置

Dir#seek

設(shè)置子文件指針

Dir#tell

獲取當(dāng)前指針

10.讀取文件屬性

#文件中是否有內(nèi)容,(返回false為有內(nèi)容,返回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)

返回指定文件的最后訪問時(shí)間

11.寫入屬性

12.枚舉一個(gè)文件夾中的所有文件夾

#require 'ftools'

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

#要區(qū)分目錄和普通文件我們這樣使用

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.復(fù)制文件夾

require "fileutils"

FileUtils.cp %%1,%%2

14.復(fù)制一個(gè)目錄下所有的文件夾到另一個(gè)文件夾下

#require 'FileUtils'

list=Dir.entries(%%1)

list.each_index do |x|

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

end

15.移動(dòng)文件夾

#require 'FileUtils'

FileUtils.mv %%1,%%2

16.移動(dòng)一個(gè)目錄下所有的文件夾到另一個(gè)目錄下

#require 'FileUtils'

list=Dir.entries(%%1)

list.each_index do |x|

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

end

17.以一個(gè)文件夾的框架在另一個(gè)目錄創(chuàng)建文件夾和空文件

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

//文件是否存在

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不是一個(gè)目錄

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

Dir.mkdir("#{File.expand_path(tar)}")#創(chuàng)建tar目錄

end

src=if FileTest.directory?(src) then

src#如果src是一個(gè)目錄名,則返回自身

else

File.dirname(src)#如果src為一個(gè)文件名,則返回該文件所在目錄

end

#Dir.foreach可以復(fù)制目標(biāo)路徑第一層目錄結(jié)構(gòu)而不復(fù)制子目錄

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

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

#~ #puts dir

#~ begin

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

#~ rescue#如果該目錄已存在則直接跳過(guò)否則創(chuàng)建該目錄

#~ end

#~ end

#~ end

#Find.find可以復(fù)制目標(biāo)路徑的完整目錄結(jié)構(gòu)漂佩,包括子目錄

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)#忽略自身,忽略上級(jí)目錄"..",忽略本級(jí)目錄"."

dirs<

end

end

#puts dirs

dirs.each do |dir|

begin

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

rescue#如果該目錄已存在則直接跳過(guò)否則創(chuàng)建該目錄

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不是一個(gè)目錄

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

Dir.mkdir("#{File.expand_path(tar)}")#創(chuàng)建tar目錄

end

src=if FileTest.directory?(src) then

src#如果src是一個(gè)目錄名,則返回自身

else

File.dirname(src)#如果src為一個(gè)文件名致讥,則返回該文件所在目錄

end

#Dir.foreach可以復(fù)制目標(biāo)路徑第一層目錄結(jié)構(gòu)而不復(fù)制子目錄

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

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

#~ #puts dir

#~ begin

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

#~ rescue#如果該目錄已存在則直接跳過(guò)否則創(chuàng)建該目錄

#~ end

#~ end

#~ end

#Find.find可以復(fù)制目標(biāo)路徑的完整目錄結(jié)構(gòu)仅仆,包括子目錄

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)#忽略自身,忽略上級(jí)目錄"..",忽略本級(jí)目錄"."

dirs<

end

end

#puts dirs

dirs.each do |dir|

begin

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

rescue#如果該目錄已存在則直接跳過(guò)否則創(chuàng)建該目錄

end

end

end

end

18.復(fù)制文件

#require 'FileUtils'

FileUtils.cp %%1, %%2

19.復(fù)制一個(gè)目錄下所有的文件到另一個(gè)目錄

#require 'FileUtils'

list=Dir.entries(%%1)

list.each_index do |x|

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

end

20.提取擴(kuò)展名

21.提取文件名

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

22.提取文件路徑

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

23.替換擴(kuò)展名

24.追加路徑

25.移動(dòng)文件

26.移動(dòng)一個(gè)文件夾下所有文件到另一個(gè)目錄

#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.打開對(duì)話框

29.文件分割

逐字節(jié)對(duì)文件進(jìn)行遍歷

可以使用each_byte方法,如果你想要轉(zhuǎn)換byte到字符的話使用chr方法:

file = File.new("myfile")

e_count = 0

file.each_byte do |byte|

e_count += 1 if byte == ?e

end

30.文件合并

逐字節(jié)對(duì)文件進(jìn)行遍歷

可以使用each_byte方法垢袱,如果你想要轉(zhuǎn)換byte到字符的話使用chr方法:

file = File.new("myfile")

e_count = 0

file.each_byte do |byte|

e_count += 1 if byte == ?e

end

31.文件簡(jiǎn)單加密

32.文件簡(jiǎn)單解密

33.讀取ini文件屬性

34.合并一個(gè)文件下所有的文件

35.寫入ini文件屬性

36.獲得當(dāng)前路徑

File.dirname($0)

37.讀取XML數(shù)據(jù)庫(kù)

38.寫入XML數(shù)據(jù)庫(kù)

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.獲得應(yīng)用程序完整路徑

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.驗(yàn)證DTD

45.Schema 驗(yàn)證

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.直接創(chuàng)建多級(jí)目錄

#require "fileutils"

FileUtils.makedirs(%%1)

48.批量重命名

49.文本查找替換 ReplaceText

50.文件關(guān)聯(lián)

51.操作Excel文件

52.設(shè)置JDK環(huán)境變量

53.選擇文件夾對(duì)話框

54.刪除空文件夾

55.發(fā)送數(shù)據(jù)到剪貼板

56.從剪貼板中取數(shù)據(jù)

57.獲取文件路徑的父路徑

58.創(chuàng)建快捷方式 CreateShortCut

59.彈出快捷菜單

60.文件夾復(fù)制到整合操作

61.文件夾移動(dòng)到整合操作

62.目錄下所有文件夾復(fù)制到整合操作

63.目錄下所有文件夾移動(dòng)到整合操作

64.目錄下所有文件復(fù)制到整合操作

65.目錄下所有文件移動(dòng)到整合操作

66.對(duì)目標(biāo)壓縮文件解壓縮到指定文件夾

67.創(chuàng)建目錄副本整合操作

68.打開網(wǎng)頁(yè)

69.刪除空文件夾整合操作

70.獲取磁盤所有分區(qū)后再把光驅(qū)盤符去除(用"\0"代替)墓拜,把結(jié)果放在數(shù)組allfenqu[] 中,數(shù)組中每個(gè)元素代表一個(gè)分區(qū)盤符请契,不包括 :\\ 這樣的路徑咳榜,allfenqu[]數(shù)組開始時(shí)存放的是所有盤符夏醉。

當(dāng)我用這樣的代碼測(cè)試結(jié)果是正確的,光驅(qū)盤符會(huì)被去掉:

CString root; //root代表盤符路徑

for(i=0;i<20;i++) //0-20代表最大的盤符數(shù)

{

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

if(GetDriveType(root)==5)

allfenqu[i]='\0';

}

但我用這樣的代碼時(shí)結(jié)果卻無(wú)法去掉光驅(qū)盤符涌韩,allfenqu[]中還是會(huì)包含光驅(qū)盤符:

CString root;

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

{

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

if(GetDriveType(root)==5)

allfenqu[i]='\0';

}

71.激活一個(gè)程序或程序關(guān)聯(lián)的文件

72.HTTP下載

73.FTP下載

74.寫圖像到剪切板 setClipboardImage

75.從剪貼板復(fù)制圖像到窗體

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末畔柔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子臣樱,更是在濱河造成了極大的恐慌靶擦,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雇毫,死亡現(xiàn)場(chǎng)離奇詭異玄捕,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)棚放,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門枚粘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人飘蚯,你說(shuō)我怎么就攤上這事馍迄。” “怎么了局骤?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵攀圈,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我庄涡,道長(zhǎng)量承,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任穴店,我火速辦了婚禮,結(jié)果婚禮上拿穴,老公的妹妹穿的比我還像新娘泣洞。我一直安慰自己,他們只是感情好默色,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布球凰。 她就那樣靜靜地躺著,像睡著了一般腿宰。 火紅的嫁衣襯著肌膚如雪呕诉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天吃度,我揣著相機(jī)與錄音甩挫,去河邊找鬼。 笑死椿每,一個(gè)胖子當(dāng)著我的面吹牛伊者,可吹牛的內(nèi)容都是我干的英遭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼亦渗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼挖诸!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起法精,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤多律,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后搂蜓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菱涤,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年洛勉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粘秆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡收毫,死狀恐怖攻走,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情此再,我是刑警寧澤昔搂,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站输拇,受9級(jí)特大地震影響摘符,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜策吠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一逛裤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧猴抹,春花似錦带族、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至跋理,卻和暖如春择克,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背前普。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工肚邢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人汁政。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓道偷,卻偏偏與公主長(zhǎng)得像缀旁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子勺鸦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容