设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2574|回复: 3
打印 上一主题 下一主题

请问VX如何进行文件操作

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2007-5-7
帖子
278
跳转到指定楼层
1
发表于 2009-2-14 16:22:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
具体问题:
1:如何在游戏中通过脚本删除全部存档
2:如何写或修改记事本等文件
3:如何判断游戏文件夹内文件特定数据或文件是否存在
版务信息:本贴由楼主自主结贴~

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

2
发表于 2009-2-14 16:26:07 | 只看该作者
懒得慢慢讲,把禾西的笔记丢给你,顺便去看一下说明档的 File 部分
文檔操作(Dir) < Object

Object 下的一個子類。所有 Obejct 能用的方法 Dir 都能用

:如何創建一個空文檔?
       |Dir.mkdir("路徑")
        路徑的類型一定要是 String,否則就會出錯
        格式需要爲 /.../...的樣子
        
        如果需要在 RM 目錄下建立新的文檔,就需要調用這樣的語句
       |Dir.mkdir('./new_document')
        這裏需要注意的是「.」,這個東西就是指示在自身目錄路徑下建立一個空文檔(子路徑)
        如果沒有「.」
        比如
       |Dir.mkdir('/new_document')
        文檔就不知道會飛到哪里去 Orz。完全找不到了
        雖然存在於某處,不過用 window 的search 功能找不出來
        
        如果同名(主要指同路徑)文檔已經存在,系統會發生錯誤
        Errno::EEXIST異常 File Exist
        
:如何删除一個文檔?
        删除文檔以前需要確認文檔爲空
        成功的話會返回 0
       |Dir.delete("./new_document") #=> 0
        否則就引起 Errno::ENOTEMPTY異常 File NotEmpty
        
        Ruby 提供了三個功能一樣的方法:
       |Dir.delete("路徑")
       |Dir.rmdir("路徑")
       |Dir.unlink("路徑")
        彼此之間沒有分別,隨便挑選一個用。(.delete 比較好記)
        
:如何打開一個文檔?
       |Dir.new("路徑")
       |Dir.open("路徑")
       |Dir.open("路徑"){|dir| ...}
        PS:Dir.open("路徑"){|dir| ...} 的附加探討請移步塊(Block)筆記
        
        打開了的文檔記得要用
       |dir變量名字.close
        關閉

:如何關閉一個文檔?
        看上面...
        
:Dir.open("路徑") 和 Dir.open("路徑"){|dir|...} 有甚麽分別?
        其實沒有甚麽分別==
        d = Dir.open("路徑") 和 dir 記錄的是同一個東西
        加了 block 只會把 Dir.open("路徑") 的返回值原原本本地丟到 dir 裏面去
        如果一定要說有甚麽不同點的話,只是返回值不同而已
        Dir.open("路徑"){|dir|...} 會返回 block 的計算值
        而不是 Dir.open("路徑")的返回值
        而且使用 block 的時候是不需要調用 .close 語句
        系統會自動幫你 close
        block 的用法跟 .proc 有點相似
        

:如何查看一個文檔當中包含的文件?
       |Dir.entries("路徑")
       |Dir.new("路徑").to_a
       |Dir.open("路徑").to_a
       |Dir.open("路徑"){|dir|dir.to_a}
        以上四個方法都是一樣的
        都會返回目錄下所有文件的名字(String 格式),幷整合到一個數組當中
        比如:
       |Dir.open('.') #=>[".","..","Data","Game.exe","Game.ini","Game.rxproj","Audio","Graphics"]

      
:如何取得當前目錄路徑?
       |Dir.getwd
       |Dir.pwd
        這兩個方法會返回當前所處的完整的目錄路徑(String 格式)
        
        如果需要在路徑當中填入當前目錄路徑,只需要
       |"."
        就可以了
        
:如何更改當前所處的文檔名字(目錄路徑)?
       |Dir.chdir("Ruby test")
      
:如何搜索當前文檔中的某些文件?
       |Dir["文件名字樣式"]
       |Dir.glob("文件名字樣式")
        與其他的 Dir 方法一樣, Dir.glob 只能帶 String 樣式的參數
        搜索的文件名字樣式一定要完整,連後綴都不能忽略
        比如這樣:
       |Dir.glob("Game")     #=> []
       |Dir.glob("Game.exe") #=> ["Game.exe"]
        模糊搜查可以用 * 代替模糊部分
       |Dir.glob("Game.*")   #=> ["Game.exe", "Game.ini", "Game.rxproj"]
        如果參數爲 "*" 就會匹配當前文件夾下所有文件
       |Dir.glob("*") #=> ["Data","Game.exe","Game.ini","Game.rxproj","Audio","Graphics"]
        此時作用「基本」跟 Dir.entries(".") 一樣
        不過 Dir.glob( ) 不會讀取到 "." 和 ".." 兩個路徑
        
        另外模糊部分也可以用[ ]指定模糊範圍
       |Dir.glob("[B-G]ame.*")
      
        需要注意的是,"*" 是不存在长度限制的,
        也就是說 "*" 代表的可能是「一個字母」,或者「一串字母」,或者「任何符號」
        如果需要精確字母長度的搜索,可以用 "?"
        "?" 代表的只有一個字母,比如這樣:
       |Dir["Game.???"] #=>["Game.exe", "Game.ini"]
       |Dir["Game.?"]   #=>[ ]
        
        另外,還有 {a,b}的選擇性模糊搜索
       |Dir["Game.{ini,exe}"] #=>["Game.exe", "Game.ini"]
        模糊部分只要符合 {a,b}當中其中一個就會視作符合整個格式
        注意的是,{ } 當中連空格都會視作匹配符之一。因此不是必要不要加入「" "」
        這點與數組和Hash 表格有所不同
        
        因爲 Dir.glob 只認當前目錄路徑
        配合 Dir.chdir("路徑") 使用可以搜索其他位置的文檔
        
:如何對於文檔下的子文檔進行地氈式搜索
        正常情况下,.glob 或者 [] 都不會讀取到 Actors.rxdata 等等的文件
        原因是其位於文檔的子文檔之。這時,我們需要用地氈式搜索把他們找出來
       |Dir["**/Actors.rxdata"]      #=> ["Data/Actors.rxdata"]
       |Dir.glob("**/Actors.rxdata") #=> ["Data/Actors.rxdata"]
        "**/"的作用是:
        由 "Actors.rxdata" 開始
        然後"/Actors.rxdata","/*/Actors.rxdata"...
        直至把文檔下的所有文件讀取到爲止
        

:關於 Dir.chdir("路徑")
        根據幫助看來,這個函數「會把當前目錄路徑改爲新的路徑(也是其參數)」
        但是實際上調用的時候,這個函數不會實際修改所處文檔下的所有東西
        其修改只能通過
       |Dir.getwd
        來獲取。如果沒有估計錯誤,應該是配合"."路徑來使用的。
        因爲 "." 路徑會跟隨當前目錄路徑而發生變化。
        
:關於"."路徑
        在所有Dir方法當中調用"."路徑爲參數時,都會默認地指向當前所處的目錄路徑
        
:如何取得打開了的文檔的路徑?
       |d = Dir.new(".")
       |d.path   #=> "當前所在的文件名字"
      
:如何歷遍瀏覽文檔中的每個文件名字?
       |d = Dir.new(".")
       |d..each  {|file| p file } #=> print ".","..","Data","Game.exe","Game.ini","Game.rxproj","Audio","Graphics"
        也可以用
       |Dir.foreach("."){|file|...}
        除了 .foreach 語句不需要 .close 關閉文檔以外
        以上兩個方法是完全一樣的
      
補充說明:
:用整數方式讀取到當前路徑位置
       |dir = Dir.open(".")
       |pos1 = dir.pos
       |pos2 = dir.tell
        pos 語句跟 tell 語句基本一樣
:轉移到另一個路徑位置
       |dir.pos = pos1
       |dir.seek(pos2)
        .pos=( ) 和 .seek 語句只能讀取由.pos 或者 .tell 獲取的整數位置
        
:從頭到尾逐個讀當前路徑當中的文件
       |dir = Dir.open(".")
       |dir.read #=> "."
       |dir.read #=> ".."
       |dir.read #=> "Data"
       |dir.read #=> "Game.exe"
      
:究竟 ".", ".."是甚麽東西!?
        "." :當前文檔路徑
        "..":當前文檔路徑上一級的路徑
        
:dir.inspect →  string
        返回對於 dir 對象的 String 式說明。
        跟 dir.to_s 相似

:Dir 的配合使用?
        IO,File 是 Dir 的好朋友。
        三者需要常常配合使用
        
附加說明 by webmaster[at]ruby-lang.org :
:Dir.chroot( string ) → 0
        将根目录改为path。请参考chroot(2)。只有超级用户才能改变根目录。
        您将无法还原到原来的根目录。
        根目录变更成功时返回0,失败时将引发Errno::EXXX异常。

:dir.rewind  →  dir
        将目录流的读取位置移到开头。返回self。
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2007-5-7
帖子
278
3
 楼主| 发表于 2009-2-14 16:41:32 | 只看该作者
不怎么懂
好象先要定义什么...
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

4
发表于 2009-2-14 16:57:29 | 只看该作者
1:如何在游戏中通过脚本删除全部存档

  1. for file in Dir.glob('Save*.rvdata')
  2.   Dir.delete(file)
  3. end
复制代码


2:如何写或修改记事本等文件

  1. string = "随你写"
  2. file = File.open("文件名", "w")
  3. file.write(string)
复制代码



3:如何判断游戏文件夹内文件特定数据或文件是否存在
a = Dir.glob('文件名称').size
若 a > 0 文件即存在
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-10 21:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表