| JScript | [语言参考](#) |
|-----|-----|
# 处理文件
有两种主要的文件处理类型:
- 创建、添加或删除数据,以及读取文件
- 移动、复制和删除文件
### 创建文件
创建空文本文件(有时被叫做“文本流”)有三种方法。
第一种方法是用 **CreateTextFile** 方法。 下面的示例示范了在 VBScript 中如何用这种方法来创建文本文件:
~~~
Dim fso, f1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
~~~
要在 JScript 中用这种方法,则使用下面的代码:
~~~
var fso, f1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
~~~
创建文本文件的第二种方法是,使用 **FileSystemObject** 对象的 **OpenTextFile** 方法,并设置 **ForWriting** 标志。在 VBScript 中,代码就像下面的示例一样:
~~~
Dim fso, ts
Const ForWriting = 2
Set fso = CreateObject("Scripting. FileSystemObject")
Set ts = fso.OpenTextFile("c:\test.txt", ForWriting, True)
~~~
要在 JScript 中使用这种方法来创建文本文件,则使用下面的代码:
~~~
var fso, ts;
var ForWriting= 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
ts = fso.OpenTextFile("c:\\test.txt", ForWriting, true);
~~~
创建文本文件的第三种方法是,使用 **OpenAsTextStream** 方法,并设置 **ForWriting** 标志。要使用这种方法,在 VBScript 中使用下面的代码:
~~~
Dim fso, f1, ts
Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile ("c:\test1.txt")
Set f1 = fso.GetFile("c:\test1.txt")
Set ts = f1.OpenAsTextStream(ForWriting, True)
~~~
在 JScript 中,则使用下面示例中的代码:
~~~
var fso, f1, ts;
var ForWriting = 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CreateTextFile ("c:\\test1.txt");
f1 = fso.GetFile("c:\\test1.txt");
ts = f1.OpenAsTextStream(ForWriting, true);
~~~
### 添加数据到文件中
一旦创建了文本文件,使用下面的三个步骤向文件添加数据:
打开文本文件。
写入数据。
关闭文件。
要打开现有的文件,则使用 FileSystemObject 对象的 OpenTextFile 方法或 File 对象的 OpenAsTextStream 方法。
要写数据到打开的文本文件,则根据下表所述任务使用 TextStream 对象的 Write、WriteLine 或 WriteBlankLines 方法。
| 任务 | 方法 |
|-----|-----|
| 向打开的文本文件写数据,不用后续一个新行字符。 | Write |
| 向打开的文本文件写数据,后续一个新行字符。 | WriteLine |
| 向打开的文本文件写一个或多个空白行。 | WriteBlankLines |
要关闭一个打开的文件,则使用 **TextStream** 对象的 **Close** 方法。
**注意 **新行字符包含一个或几个字符(取决于操作系统),以把光标移动到下一行的开始位置(回车/换行)。注意某些字符串末尾可能已经有这个非打印字符了。
下面的 VBScript 例子示范了如何打开文件,和同时使用三种写方法来向文件添加数据,然后关闭文件:
~~~
Sub CreateFile()
~~~
~~~
Dim fso, tf
~~~
~~~
Set fso = CreateObject("Scripting.FileSystemObject")
~~~
~~~
Set tf = fso.CreateTextFile("c:\testfile.txt", True)
~~~
~~~
'
~~~
写一行,并且带有新行字符。
~~~
tf.WriteLine("Testing 1, 2, 3.")
~~~
~~~
'
~~~
向文件写三个新行字符。
~~~
~~~
~~~
tf.WriteBlankLines(3)
~~~
~~~
'
~~~
写一行。
~~~
tf.Write ("This is a test.")
~~~
~~~
tf.Close
~~~
~~~
End Sub
~~~
这个示例示范了在 JScript 中如何使用这三个方法:
~~~
function CreateFile()
{
~~~
~~~
var fso, tf;
~~~
~~~
fso = new ActiveXObject("Scripting.FileSystemObject");
~~~
~~~
tf = fso.CreateTextFile("c:\\testfile.txt", true);
~~~
~~~
//
~~~
写一行,并且带有新行字符。
~~~
tf.WriteLine("Testing 1, 2, 3.") ;
~~~
~~~
//
~~~
向文件写三个新行字符。
~~~
~~~
~~~
tf.WriteBlankLines(3) ;
~~~
~~~
//
~~~
写一行。
~~~
tf.Write ("This is a test.");
~~~
~~~
tf.Close();
~~~
~~~
}
~~~
### 读取文件
要从文本文件读取数据,则使用 **TextStream** 对象的 **Read**、**ReadLine** 或 **ReadAll** 方法。下表描述了不同的任务应使用哪种方法。
| 任务 | 方法 |
|-----|-----|
| 从文件读取指定数量的字符。 | Read |
| 读取一整行(一直到但不包括新行字符)。 | ReadLine |
| 读取文本文件的整个内容。 | ReadAll |
如果使用 **Read** 或 **ReadLine** 方法,并且想跳过数据的特殊部分,则使用 **Skip** 或 **SkipLine** 方法。read 方法的结果文本存在一个字符串中,该字符串可以显示在一个控件中,也可以用字符串函数(如 **Left**、**Right** 和 **Mid**)来分析,连接等等。
下面的 VBScript 示例示范了如何打开文件,和如何写数据到文件中并从文件读取数据:
~~~
Sub ReadFiles
~~~
~~~
Dim fso, f1, ts, s
~~~
~~~
Const ForReading = 1
~~~
~~~
Set fso = CreateObject("Scripting.FileSystemObject")
~~~
~~~
Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
~~~
~~~
'
~~~
写一行。
~~~
Response.Write "Writing file <br>"
~~~
~~~
f1.WriteLine "Hello World"
~~~
~~~
f1.WriteBlankLines(1)
~~~
~~~
f1.Close
~~~
~~~
'
~~~
读取文件的内容。
~~~
Response.Write "Reading file <br>"
~~~
~~~
Set ts = fso.OpenTextFile("c:\testfile.txt", ForReading)
~~~
~~~
s = ts.ReadLine
~~~
~~~
Response.Write "File contents = '" & s & "'"
~~~
~~~
ts.Close
~~~
~~~
End Sub
~~~
下面的代码示范了在 JScript 中做同样的事:
~~~
function ReadFiles()
{
~~~
~~~
var fso, f1, ts, s;
~~~
~~~
var ForReading = 1;
~~~
~~~
fso = new ActiveXObject("Scripting.FileSystemObject");
~~~
~~~
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
~~~
~~~
//
~~~
写一行。
~~~
Response.Write("Writing file <br>");
~~~
~~~
f1.WriteLine("Hello World");
~~~
~~~
f1.WriteBlankLines(1);
~~~
~~~
f1.Close();
~~~
~~~
//
~~~
读取文件的内容。
~~~
Response.Write("Reading file <br>");
~~~
~~~
ts = fso.OpenTextFile("c:\\testfile.txt", ForReading);
~~~
~~~
s = ts.ReadLine();
~~~
~~~
Response.Write("File contents = '" + s + "'");
~~~
~~~
ts.Close();
~~~
~~~
}
~~~
### 移动、复制和删除文件
FSO 对象模式各有两种方法移动、复制和删除文件,如下表所述。
| 任务 | 方法 |
|-----|-----|
| 移动文件 | File.Move 或 FileSystemObject.MoveFile |
| 复制文件 | File.Copy 或 FileSystemObject.CopyFile |
| 删除文件 | File.Delete 或 FileSystemObject.DeleteFile |
下面的 VBScript 示例,在驱动器 C 的根目录中创建一个文本文件,向其中写一些信息,然后把它移动到 \tmp 目录中,并在 \temp 中做一个备份,最后把它们从两个目录中删掉。
要运行下面的示例,需要先在驱动器 C 的根目录中创建 \tmp 和 \temp 目录:
~~~
Sub ManipFiles
~~~
~~~
Dim fso, f1, f2, s
~~~
~~~
Set fso = CreateObject("Scripting.FileSystemObject")
~~~
~~~
Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
~~~
~~~
Response.Write "Writing file <br>"
~~~
~~~
'
~~~
写一行。
~~~
f1.Write ("This is a test.")
~~~
~~~
'
~~~
关闭文件。
~~~
f1.Close
~~~
~~~
Response.Write "Moving file to c:\tmp <br>"
~~~
~~~
'
~~~
获取
~~~
C
~~~
的根目录
~~~
(C:\)
~~~
中的文件的句柄。
~~~
Set f2 = fso.GetFile("c:\testfile.txt")
~~~
~~~
'
~~~
把文件移动到
~~~
\tmp
~~~
目录。
~~~
f2.Move ("c:\tmp\testfile.txt")
~~~
~~~
Response.Write "Copying file to c:\temp <br>"
~~~
~~~
'
~~~
把文件复制到
~~~
\temp
~~~
目录。
~~~
f2.Copy ("c:\temp\testfile.txt")
~~~
~~~
Response.Write "Deleting files <br>"
~~~
~~~
'
~~~
获得文件当前位置的句柄。
~~~
Set f2 = fso.GetFile("c:\tmp\testfile.txt")
~~~
~~~
Set f3 = fso.GetFile("c:\temp\testfile.txt")
~~~
~~~
'
~~~
删除文件。
~~~
f2.Delete
~~~
~~~
f3.Delete
~~~
~~~
Response.Write "All done!"
~~~
~~~
End Sub
~~~
下面的代码示范了在 JScript 中做同样的事:
~~~
function ManipFiles()
{
~~~
~~~
var fso, f1, f2, s;
~~~
~~~
fso = new ActiveXObject("Scripting.FileSystemObject");
~~~
~~~
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
~~~
~~~
Response.Write("Writing file <br>");
~~~
~~~
//
~~~
写一行。
~~~
f1.Write("This is a test.");
~~~
~~~
//
~~~
关闭文件。
~~~
f1.Close();
~~~
~~~
Response.Write("Moving file to c:\\tmp <br>");
~~~
~~~
//
~~~
获取
~~~
C
~~~
的根目录
~~~
(C:\)
~~~
中的文件的句柄。
~~~
f2 = fso.GetFile("c:\\testfile.txt");
~~~
~~~
//
~~~
把文件移动到
~~~
\tmp
~~~
目录。
~~~
f2.Move ("c:\\tmp\\testfile.txt");
~~~
~~~
Response.Write("Copying file to c:\\temp <br>");
~~~
~~~
//
~~~
把文件复制到
~~~
\temp
~~~
目录。
~~~
f2.Copy ("c:\\temp\\testfile.txt");
~~~
~~~
Response.Write("Deleting files <br>");
~~~
~~~
//
~~~
获得文件当前位置的句柄。
~~~
f2 = fso.GetFile("c:\\tmp\\testfile.txt");
~~~
~~~
f3 = fso.GetFile("c:\\temp\\testfile.txt");
~~~
~~~
//
~~~
删除文件。
~~~
f2.Delete();
~~~
~~~
f3.Delete();
~~~
~~~
Response.Write("All done!");
~~~
}
[© 2000 Microsoft Corporation 版权所有。保留所有权利。使用规定。](#)
- JScript
- JScript 用户指南
- Jscript 基础
- 什么是 JScript?
- 编写 JScript 代码
- JScript 的变量
- JScript 的数据类型
- JScript 的运算符
- 控制程序的流程
- JScript 函数
- Jscript对象
- 创建自己的对象
- 内部对象
- JScript 保留关键字
- 高级 JScript
- 创建高级对象
- 递归
- 变量范围
- 复制、传递和比较数据
- 使用数组
- 特殊字符
- 脚本问题解答
- 条件编译
- 条件编译变量
- 在浏览器中显示信息
- 使用消息框
- 语言参考
- 特性信息
- Microsoft JScript 特性 - ECMA
- Microsoft JScript 特性 - 非-ECMA
- JScript 字母顺序的关健字列表
- JScript 错误
- JScript 运行时错误
- JScript 语法错误
- JScript 函数
- GetObject 函数
- ScriptEngine 函数
- ScriptEngineBuildVersion 函数
- ScriptEngineMajorVersion 函数
- ScriptEngineMinorVersion 函数
- JScript 方法
- A-E
- abs 方法
- acos 方法
- anchor 方法
- apply 方法
- asin 方法
- atan 方法
- atan2 方法
- atEnd 方法
- big 方法
- blink 方法
- bold 方法
- call 方法
- ceil 方法
- charAt 方法
- charCodeAt 方法
- compile 方法
- concat 方法 (Array)
- concat 方法 (String)
- cos 方法
- decodeURI 方法
- decodeURIComponent 方法
- dimensions 方法
- encodeURI 方法
- encodeURIComponent 方法
- escape 方法
- eval 方法
- exec 方法
- exp 方法
- F-I
- fixed 方法
- floor 方法
- fontcolor 方法
- fontsize 方法
- fromCharCode 方法
- getDate 方法
- getDay 方法
- getFullYear 方法
- getHours 方法
- getItem 方法
- getMilliseconds 方法
- getMinutes 方法
- getMonth 方法
- getSeconds 方法
- getTime 方法
- getTimezoneOffset 方法
- getUTCDate 方法
- getUTCDay 方法
- getUTCFullYear 方法
- getUTCHours 方法
- getUTCMilliseconds 方法
- getUTCMinutes 方法
- getUTCMonth 方法
- getUTCSeconds 方法
- getVarDate 方法
- getYear 方法
- indexOf 方法
- isFinite 方法
- isNaN 方法
- italics 方法
- item 方法
- J-R
- join 方法
- lastIndexOf 方法
- lbound 方法
- link 方法
- localeCompare 方法
- log 方法
- match 方法
- max 方法
- min 方法
- moveFirst 方法
- moveNext 方法
- parse 方法
- parseFloat 方法
- parseInt 方法
- pop 方法
- pow 方法
- push 方法
- random 方法
- replace 方法
- reverse 方法
- round 方法
- S
- search 方法
- setDate 方法
- setFullYear 方法
- setHours 方法
- setMilliseconds 方法
- setMinutes 方法
- setMonth 方法
- setSeconds 方法
- setTime 方法
- setUTCDate 方法
- setUTCFullYear 方法
- setUTCHours 方法
- setUTCMilliseconds 方法
- setUTCMinutes 方法
- setUTCMonth 方法
- setUTCSeconds 方法
- setYear 方法
- shift 方法
- sin 方法
- slice 方法 (Array)
- slice 方法 (String)
- small 方法
- sort 方法
- splice 方法
- split 方法
- sqrt 方法
- strike 方法
- sub 方法
- substr 方法
- substring 方法
- sup 方法
- T-Z
- tan 方法
- test 方法
- toArray 方法
- toDateString 方法
- toExponential 方法
- toFixed 方法
- toGMTString 方法
- toLocaleDateString 方法
- toLocaleLowerCase 方法
- toLocaleString 方法
- toLocaleTimeString 方法
- toLocaleUpperCase 方法
- toLowerCase 方法
- toPrecision 方法
- toString 方法
- toTimeString 方法
- toUpperCase 方法
- toUTCString 方法
- ubound 方法
- unescape 方法
- unshift 方法
- UTC 方法
- valueOf 方法
- JScript 对象
- ActiveXObject 对象
- Array 对象
- Boolean 对象
- Date 对象
- Enumerator 对象
- Error 对象
- Function 对象
- Global 对象
- Math 对象
- Number 对象
- Object 对象
- RegExp 对象
- 正则表达式对象
- String 对象
- VBArray 对象
- JScript 运算符
- 通用信息
- 运算符优先级
- 运算符总结
- 加法赋值运算符 (+=)
- 加法运算符 (+)
- 赋值运算符 (=)
- 按位“与”赋值运算符 (&=)
- 按位“与”运算符 (&)
- 按位左移运算符 (<<)
- 按位“非”运算符 (~)
- 按位“或”赋值运算符 (|=)
- 按位“或”运算符 (|)
- 按位右移运算符 (>>)
- 按位“异或”赋值运算符 (^=)
- 按位“异或”运算符 (^)
- 逗号运算符 (,)
- 比较运算符
- 复合赋值运算符
- 条件(三目)运算符 (?:)
- delete 运算符
- 除法赋值运算符 (/=)
- 除法运算符 (/)
- in 运算符
- 递增 (++) 和递减 (--) 运算符
- instanceof 运算符
- 左移赋值运算符 (<<=)
- 逻辑“与”运算符 (&&)
- 逻辑“非”运算符 (!)
- 逻辑“或”运算符 (||)
- 取余赋值运算符 (%=)
- 取余运算符 (%)
- 乘法赋值运算符 (*=)
- 乘法运算符 (*)
- new 运算符
- 右移赋值运算符 (>>=)
- 减法赋值运算符 (-=)
- 减法运算符 (-)
- typeof 运算符
- 无符号右移运算符 (>>>)
- 无符号右移赋值操作 (>>>=)
- void 运算符
- JScript 属性
- $1...$9 属性
- arguments 属性
- caller 属性
- constructor 属性
- description 属性
- E 属性
- global 属性
- hasOwnProperty 方法
- ignoreCase 属性
- index 属性
- Infinity 属性
- input 属性($_)
- isProptotyeOf 方法
- lastIndex 属性
- length 属性 (Array)
- length 属性 (Function)
- length 属性 (String)
- LN10 属性
- LN2 属性
- LOG10E 属性
- LOG2E 属性
- MAX_VALUE 属性
- message 属性
- MIN_VALUE 属性
- multiline 属性
- name 属性
- NaN 属性
- NaN 属性 (Global)
- NEGATIVE_INFINITY 属性
- number 属性
- PI 属性
- POSITIVE_INFINITY 属性
- propertyIsEnumerable 属性
- prototype 属性
- source 属性
- SQRT1_2 属性
- SQRT2 属性
- undefined 属性
- JScript 语句
- @cc_on 语句
- @if 语句
- @set 语句
- break 语句
- Comment 语句
- continue 语句
- do...while 语句
- for 语句
- for...in 语句
- function 语句
- if...else 语句
- Labeled 语句
- return 语句
- switch 语句
- this 语句
- throw 语句
- try...catch...finally 语句
- var 语句
- while 语句
- with 语句
- FileSystemObject 用户指南
- FileSystemObject 对象模型
- FileSystemObject 和 Scripting 运行时库参考的介绍
- FileSystemObject 对象
- 设计 FileSystemObject
- 处理驱动器和文件夹
- 处理文件
- FileSystemObject 示例代码
- Scripting 运行时库参考
- 脚本运行时方法
- Add 方法 (Dictionary)
- Add 方法 (Folders)
- BuildPath 方法
- Close 方法
- Copy 方法
- CopyFile 方法
- CopyFolder 方法
- CreateFolder 方法
- CreateTextFile 方法
- Delete 方法
- DeleteFile 方法
- DeleteFolder 方法
- DriveExists 方法
- Exists 方法
- FileExists 方法
- FolderExists 方法
- GetAbsolutePathName 方法
- GetBaseName 方法
- GetDrive 方法
- GetDriveName 方法
- GetExtensionName 方法
- GetFile 方法
- GetFileName 方法
- getFileVersion 方法
- GetFolder 方法
- GetParentFolderName 方法
- GetSpecialFolder 方法
- GetTempName 方法
- Items 方法
- Keys 方法
- Move 方法
- MoveFile 方法
- MoveFolder 方法
- OpenAsTextStream 方法
- OpenTextFile 方法
- Read 方法
- ReadAll 方法
- ReadLine 方法
- Remove 方法
- RemoveAll 方法
- Skip 方法
- SkipLine 方法
- Write 方法
- WriteBlankLines 方法
- WriteLine 方法
- 脚本运行时对象
- Dictionary 对象
- Drive 对象
- Drives 集合
- File 对象
- Files 集合
- FileSystemObject 对象
- Folder 对象
- Folders 集合
- TextStream 对象
- 脚本运行时属性
- AtEndOfLine 属性
- AtEndOfStream 属性
- Attributes 属性
- AvailableSpace 属性
- Column 属性
- CompareMode 属性
- Count 属性
- DateCreated 属性
- DateLastAccessed 属性
- DateLastModified 属性
- Drive 属性
- DriveLetter 属性
- Drives 属性
- DriveType 属性
- Files 属性
- FileSystem 属性
- FreeSpace 属性
- IsReady 属性
- IsRootFolder 属性
- Item 属性
- Key 属性
- Line 属性
- Name 属性
- ParentFolder 属性
- Path 属性
- RootFolder 属性
- SerialNumber 属性
- ShareName 属性
- ShortName 属性
- ShortPath 属性
- Size 属性
- SubFolders 属性
- TotalSize 属性
- Type 属性
- VolumeName 属性
- 正则表达式简介
- 正则表达式
- 早期起源
- 使用正则表达式
- 正则表达式语法
- 建立正则表达式
- 优先权顺序
- 普通字符
- 特殊字符
- 非打印字符
- 字符匹配
- 限定符
- 定位符
- 选择和编组
- 后向引用