VBS学习日记(八) FSO 中文件的基本操作

Vbs 脚本编程简明教程——FSO 中文件的基本操作
一、文件属性:

在 windows 中,文件的属性一般用数字来表示:

0代表 normal,即普通文件未设置任何属性。
1代表只读文件。
2代表隐藏文件。
4代表系统文件。
16代表文件夹或目录。
32代表存档文件。
1024代表链接或快捷方式。
2048压缩文件,只读。

Set fso = WScript.CreateObject("Scripting.filesystemobject")
Set f = fso.GetFile("D:\DownLoad\SilkTest入门指南.doc")
Select Case f.Attributes' attributes 函数的作用是显示文件属性 
	Case 0
		MsgBox "普通文件,没有设置任何属性。"
	Case 1
		MsgBox "只读文件,可读写。"	
	Case 2
		MsgBox "隐藏文件,可读写。"
	Case 4
		MsgBox "系统文件,可读写。"
	Case 16
		MsgBox "文件夹或目录,只读。"
	Case 32
		MsgBox "上次备份后已更改的文件,可读写。"
	Case 1024
		MsgBox "链接或快捷方式,只读。"
	Case 2048
		MsgBox "压缩文件,只读。"
	Case Else
		MsgBox "未知属性。"
End Select
需要说明的是:msgbox 显示的结果往往不是上面说明的数字,而是有关属性代表数字的和。
二、创建文件:
object.createtextfile 方法, 注意创建前一般需要检查文件是否存在。

Dim fso,filePath,f
filePath = "D:\Test.txt"
Set fso = WScript.CreateObject("Scripting.filesystemobject")
If (fso.FileExists(filePath)) Then
	WScript.Echo "该文件已经存在,执行先删除,后创建!"
	fso.DeleteFile filePath,True
	Set f = fso.CreateTextFile(filePath,True,True)'"D:\Test.txt"为可覆盖的Unicode文件
	f.Write("After the first remove created!")
	f.Close
Else
	Set f = fso.CreateTextFile(filePath,True,True)'"D:\Test.txt"为可重写的Unicode文件
	f.WriteLine("This is a test!Directly to create!")
	f.Close()
End If 
如需要强制覆盖已存在的文件,则在文件名后加 true 参数。具体详见 CreateTextFile

三、复制、移动、删除文件:

使用 copyfile 方法、movefile 方法、deletefile 方法。例如:

Dim fso,sourfilePath,desFilePath,desFoldPath,desFold
sourfilePath = "D:\Test.txt"
desFilePath = "D:\Temp\Test.txt"
desFold = "D:\Temp"
desFoldPath = "D:\Temp1"
Set fso = WScript.CreateObject("Scripting.filesystemobject")
If (fso.FileExists(sourfilePath)) Then
	WScript.Echo sourfilePath & "文件已经存在"	
Else 
	fso.CreateTextFile sourfilePath,True,True '新建文本文件
End If 

If (fso.FolderExists(desFold)) Then
	WScript.Echo desFold & "文件夹已经存在"
Else 
	fso.CreateFolder desFold '新建文件夹
End If 

If (fso.FolderExists(desFoldPath)) Then
	WScript.Echo desFoldPath & "文件夹已经存在"	
Else 
	fso.CreateFolder desFoldPath 
End If 

fso.CopyFile sourfilePath,desFilePath,True 'true 代表强制覆盖
fso.MoveFile sourfilePath,desFoldPath & "\" '移动文件
fso.DeleteFile desFilePath,True '删除文件
fso.DeleteFolder desFold,True '删除文件夹
fso.DeleteFolder desFoldPath,True

四、文件的读写:

1、打开文件:使用 opentextfile 方法

Set fso = WScript.CreateObject("Scripting.filesystemobject")
fso.OpenTextFile "D:\Test.txt",1,True,-1 '以只读Unicode,在文件不存在时创建新文件的方式打开文件

2、读取文件:read(x) 读 x 个字符;readline读一行;readall全部读取

On Error Resume Next
Set fso = WScript.CreateObject("Scripting.filesystemobject")
Set ffile = fso.OpenTextFile ("D:\Test.txt",1,True,-2)
value = ffile.Read(20)
line = ffile.ReadLine '注意别让程序直接把文本中的内容读完了,那么在ReadAll就会报错
If Err.Number<>0 Then
	WScript.Echo Err.Number & Err.Description &Err.Source
End if
contents = ffile.ReadAll
WScript.Echo chr(10) & "value=" & value & Chr(10) & "line=" & line & Chr(10) & "contents=" & contents

3、常见的指针变量:

atendofstream 属性:当处于文件结尾的时候这个属性返回 true。一般用循环检测是否到达文件末尾。

atendofline 属性:如果已经到了行末尾,这个属性返回 true。

Column 属性(当前字符位置的列号)和 line 属性(文件当前行号):在打开一个文件后,行和列指针都被设置为 1。

On Error Resume Next
Set fso = WScript.CreateObject("Scripting.filesystemobject")
Set ff = fso.OpenTextFile("D:\Test.txt",1,True,-2)
If Err.Number<>0 Then
	WScript.Echo Err.Number & Err.Description & Err.Source & Chr(10)
End If
WScript.Echo ff.Line & "行" & ff.Column & "列" '显示打开文件时行列指针所指向的行列号
Do While ff.AtEndOfStream<>True
	WScript.Echo ff.Read(10)
Loop
ff.Close '关闭文件

4、在文件中跳行:skip(x) 跳过 x 个字符;skipline 跳过一行

On Error Resume Next
Set fso = WScript.CreateObject("Scripting.filesystemobject")
Set ff = fso.OpenTextFile("D:\Test.txt",1,True,-2)
Do While ff.AtEndOfStream<>True
	WScript.Echo ff.ReadLine
	ff.SkipLine
	ff.Skip(3) '跳过3个汉字或者3个字符
Loop
ff.Close

运行结果这里我就不截图了,因为我用的是很长的文章O(∩_∩)O

5、在文件中写入字符:可以用 2-写入和 8-追加的方式来写入其方法有:write(x)写入 x 字符串;writeline(x)写入 x 代表的一行writeblanklines(n) 写入 n 个空行

Set fso = WScript.CreateObject("Scripting.filesystemobject")
Set ff = fso.OpenTextFile("D:\Test.txt",2,True,-2) '覆盖方式打开
ff.Write("这是覆盖写入的字符串")
ff.Write vbCrLf '更多关于这类的常量请参见<a target=_blank href="http://blog.youkuaiyun.com/suifenghuidong/article/details/37886365">VB中字符串常数</a>
'ff.Write Chr(13) & Chr(10) '效果和上条语句一样
ff.Close
Set ff = fso.OpenTextFile("D:\Test.txt",8,True,-2) '追加形式打开
ff.Write("这是追加写入的字符串")
ff.WriteLine("WriteLine")
ff.Write("测试")
ff.WriteBlankLines(3) '写入三个空行,即三次回车换行,在上一行未结束时产生效果是空两行
ff.Write("测试")
ff.Close


注意:最后一定要使用 close 方法关闭文件。读文件后一定要关闭,才能以写的方式打开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值